示例#1
0
        /// <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");
        }