最終更新:2014-02-27 (木) 07:15:51 (2399d)  

SetWindowsHookEx
Top / SetWindowsHookEx

アプリケーション定義のフックプロシージャをフックチェーン内にインストールします。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx

http://msdn.microsoft.com/ja-jp/library/cc430103.aspx

HHOOK SetWindowsHookEx(
  int idHook,        // フックタイプ
  HOOKPROC lpfn,     // フックプロシージャ
  HINSTANCE hMod,    // アプリケーションインスタンスのハンドル
  DWORD dwThreadId   // スレッドの識別子
);

フックタイプ

説明
WH_CALLWNDPROC?システムが目的のウィンドウプロシージャへ送信したメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、CallWndProc? フックプロシージャの説明を参照してください。
WH_CALLWNDPROCRET?目的のウィンドウプロシージャが処理したばかりのメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、CallWndRetProc? フックプロシージャの説明を参照してください。
WH_CBT?コンピュータを利用したトレーニング(CBT)アプリケーションに有用な通知を受け取る 1 個のフックプロシージャをインストールします。詳細については、CBTProc フックプロシージャの説明を参照してください。
WH_DEBUG?ほかのフックプロシージャのデバッグに有用な 1 個のフックプロシージャをインストールします。詳細については、DebugProc? フックプロシージャの説明を参照してください。
WH_FOREGROUNDIDLE?アプリケーションのフォアグラウンドスレッドがアイドル状態になろうとしているときに呼び出される、1 個のフックプロシージャをインストールします。アイドル時に優先順位の低いタスクを実行する場合、このフックは役に立ちます。詳細については、ForegroundIdleProc? フックプロシージャの説明を参照してください。
WH_GETMESSAGE?メッセージキューへポストされたメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、GetMsgProc? フックプロシージャの説明を参照してください。
WH_JOURNALPLAYBACK?WH_JOURNALRECORD フックプロシージャが既に記録したメッセージをポストする 1 個のフックプロシージャをインストールします。詳細については、JournalPlaybackProc? フックプロシージャの説明を参照してください。
WH_JOURNALRECORD?システムメッセージキューへポストされた入力メッセージを記録する 1 個のフックプロシージャをインストールします。マクロを記録する際に、このフックは役立ちます。詳細については、JournalRecordProc? フックプロシージャの説明を参照してください。
WH_KEYBOARD?キーストロークメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、KeyboardProc? フックプロシージャの説明を参照してください。
WH_KEYBOARD_LL低水準のキーボード入力イベントを監視する 1 個のフックプロシージャをインストールします。詳細については、LowLevelKeyboardProc? フックプロシージャの説明を参照してください。
WH_MOUSE?マウスメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、MouseProc? フックプロシージャの説明を参照してください。
WH_MOUSE_LL低水準のマウス入力イベントを監視する 1 個のフックプロシージャをインストールします。詳細については、LowLevelMouseProc? フックプロシージャの説明を参照してください。
WH_MSGFILTER?ダイアログボックス、メッセージボックス、メニュー、スクロールバーのいずれかへの入力イベントの結果として生成されたメッセージを監視する 1 個のフックプロシージャをインストールします。詳細については、MessageProc? フックプロシージャの説明を参照してください。
WH_SHELL?シェルアプリケーションにとって有用な通知を受け取る 1 個のフックプロシージャをインストールします。詳細については、ShellProc? フックプロシージャの説明を参照してください。
WH_SYSMSGFILTER?ダイアログボックス、メッセージボックス、メニュー、スクロールバーのいずれかへの入力イベントの結果として生成されたメッセージを監視する 1 個のフックプロシージャをインストールします。このフックプロシージャは、呼び出し側スレッドと同じデスクトップ内のすべてのアプリケーションを対象とするこれらのメッセージを監視します。詳細については、SysMsgProc? フックプロシージャの説明を参照してください。

メモ

  • Windows 7ではグローバルフックで捕まえたメッセージを300ms以内で処理出来ないことが10回続いた場合、そのプロセスは強制的にフックを解除され二度と登録できない
  • http://yu1rows.blogspot.jp/2012/02/rawinputnet.html

関連

  • CallNextHookEx?
  • UnhookWindowsHookEx?