/// <summary> /// メッセージフックを開始 /// </summary> private void BeginHook() { // ウィンドウが操作不可なら設定はできない if (!IsActive) { EndHook(); // フック設定なしということにしておく return; } // フック設定済みなら二重には設定しない if (IsHookSet) { return; } // フックを設定 uint threadId = WinApi.GetCurrentThreadId(); IntPtr module = WinApi.GetModuleHandle(null); myHookCallback = new WinApi.HookProc(MessageCallback); myHook = WinApi.SetWindowsHookEx(WinApi.WH_GETMESSAGE, myHookCallback, module, threadId); // フック設定失敗時 if (myHook == IntPtr.Zero) { Debug.Log("SetWindowsHookEx:" + WinApi.GetLastError()); return; } IsHookSet = true; //Debug.Log("BeginHook"); }