GetMsgProc 関数
SetWindowsHookExA/SetWindowsHookExW 関数で使われる、アプリケーション定義またはライブラリ定義のコールバック関数。 GetMessage または PeekMessageA/PeekMessageW 関数がアプリケーション メッセージ キューからメッセージを取得すると常に、システムはこの関数を呼び出します。 システムは、取得したメッセージを呼び出し元に返す前に、メッセージをフック プロシージャに渡します。
このコールバック関数へのポインターは、HOOKPROC 型で定義されています。 GetMsgProc は、アプリケーション定義またはライブラリ定義の関数名のプレースホルダーです。
LRESULT CALLBACK GetMsgProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
型: int
フック プロシージャがメッセージを処理する必要があるかどうかを指定します。 code が HC_ACTION の場合、フック プロシージャはメッセージを処理する必要があります。 code が 0 未満の場合、フック プロシージャは、それ以上の処理を行わずにメッセージを CallNextHookEx 関数に渡す必要があり、CallNextHookEx から返された値を返す必要があります。
型: WPARAM
メッセージがキューから削除されたかどうかを指定します。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
PM_NOREMOVE 0x0000 | メッセージはキューから削除されていません。 (アプリケーションは、PM_NOREMOVE フラグを指定して PeekMessage 関数を呼び出しました)。 |
PM_REMOVE 0x0001 | メッセージはキューから削除されています。 (アプリケーションは、GetMessage を呼び出したか、または PM_REMOVE フラグを指定して PeekMessage 関数を呼び出しました)。 |
型: LPARAM
メッセージに関する詳細を含む MSG 構造体へのポインター。
code が 0 未満の場合、フック プロシージャは CallNextHookEx によって返された値を返す必要があります。
code が 0 以上の場合は、CallNextHookEx を呼び出し、それによって返される値を返すことを強くお勧めします。そうしないと、WH_GETMESSAGE フックをインストールしている他のアプリケーションがフック通知を受け取らず、結果として正しく動作しない可能性があります。 フック プロシージャが CallNextHookEx を呼び出さない場合は、戻り値を 0 にする必要があります。
GetMsgProc フック プロシージャでは、メッセージを調べたり変更したりできます。
フック プロシージャが制御をシステムに返した後、GetMessage または PeekMessageA/PeekMessageW 関数は、メッセージとすべての変更を、最初にそれを呼び出したアプリケーションに返します。
アプリケーションは、SetWindowsHookExA/SetWindowsHookExW 関数の呼び出しで、WH_GETMESSAGE フックの種類とフック プロシージャへのポインターを指定して、このフック プロシージャをインストールします。