KeyboardProc コールバック関数

説明

SetWindowsHookExA/SetWindowsHookExW 関数で使用されるアプリケーション定義またはライブラリ定義のコールバック関数。

アプリケーションが GetMessage または PeekMessageA/PeekMessageW 関数を呼び出し、処理するキーボード メッセージ (WM_KEYUPまたはWM_KEYDOWNがある場合は常に、この関数を呼び出します。

HOOKPROC 型は、このコールバック関数へのポインターを定義します。 KeyboardProc は、アプリケーション定義またはライブラリ定義関数名のプレースホルダーです。

LRESULT CALLBACK KeyboardProc(
  _In_ int    code,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

パラメーター

code [in]

型: int

フック プロシージャがメッセージの処理方法を決定するために使用するコード。

コードが 0 未満の場合、フック プロシージャは、それ以上の処理を行わずにメッセージを CallNextHookEx 関数に渡す必要があり、CallNextHookEx によって返される値を返す必要があります。

このパラメーターには、次の値のいずれかを指定できます。

説明
HC_ACTION 0 wParam パラメーターと lParam パラメーターには、キーストローク メッセージに関する情報が含まれています。
HC_NOREMOVE 3 wParam パラメーターと lParam パラメーターにはキーストローク メッセージに関する情報が含まれており、キーストローク メッセージはメッセージ キューから削除されていません。 ( PeekMessage 関数と呼ばれるアプリケーションで、 PM_NOREMOVE フラグを指定します)。

wParam [in]

型: WPARAM

キーストローク メッセージを生成したキーの 仮想キー コード

lParam [in]

型: LPARAM

繰り返し数、スキャン コード、拡張キー フラグ、コンテキスト コード、前のキー状態フラグ、および遷移状態フラグ。 lParam パラメーターの詳細については、「キーストローク メッセージ フラグ」を参照してください。 次の表では、この値のビットについて説明します。

Bits 説明
0-15 繰り返し数。 値は、ユーザーがキーを押した結果としてキーストロークが繰り返される回数です。
16-23 スキャン コード。 値は、OEM によって異なります。
24 キーが拡張キー (ファンクション キーやテンキーのキーなど) であるかどうかを示します。 キーが拡張キーの場合、値は 1 です。それ以外の場合は 0 です。
25-28 予約済み。
29 コンテキスト コード。 Alt キーがダウンしている場合、値は 1 です。それ以外の場合は 0 です。
30 以前のキーの状態。 メッセージが送信される前にキーがダウンしている場合、値は 1 です。キーがアップしている場合は 0 です。
31 遷移の状態。 キーが押されている場合は 0、解放されている場合は 1 です。

戻り値

型: LRESULT

コードが 0 未満の場合、フック プロシージャは CallNextHookEx によって返される値を返す必要があります。

コードが 0 以上で、フック プロシージャがメッセージを処理しなかった場合は、CallNextHookEx を呼び出して、返される値を返すように強くお勧めします。それ以外の場合、WH_KEYBOARDフックがインストールされている他のアプリケーションはフック通知を受け取らず、結果として正しく動作しない可能性があります。

フック プロシージャがメッセージを処理した場合、システムがフック チェーンまたはターゲット ウィンドウ プロシージャの残りの部分にメッセージを渡さないようにするために、0 以外の値を返す可能性があります。

注釈

アプリケーションは、setWindowsHookExA/SetWindowsHookExW 関数の呼び出しで、WH_KEYBOARDフックの種類とフック プロシージャへのポインターを指定して、フック プロシージャをインストールします。

このフックは、インストールしたスレッドのコンテキストで呼び出される場合があります。 呼び出しは、フックをインストールしたスレッドにメッセージを送信することによって行われます。 したがって、フックをインストールしたスレッドにはメッセージ ループが必要です。

関連項目