MessageProc 関数
説明
SetWindowsHookExA/SetWindowsHookExW 関数で使用されるアプリケーション定義またはライブラリ定義のコールバック関数。 システムは、入力イベントがダイアログ ボックス、メッセージ ボックス、メニュー、またはスクロール バーで発生した後、入力イベントによって生成されたメッセージが処理される前に、この関数を呼び出します。 フック プロシージャは、特定のアプリケーションまたはすべてのアプリケーションによって作成されたダイアログ ボックス、メッセージ ボックス、メニュー、またはスクロール バーのメッセージを監視できます。
HOOKPROC 型は、このコールバック関数へのポインターを定義します。 MessageProc は、アプリケーション定義またはライブラリ定義関数名のプレースホルダーです。
LRESULT CALLBACK MessageProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
パラメーター
code [in]
型: int
メッセージを生成した入力イベントの種類。
コードが 0 未満の場合、フック プロシージャは、それ以上の処理を行わずにメッセージを CallNextHookEx 関数に渡し、CallNextHookEx によって返される値を返す必要があります。
このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
MSGF_DDEMGR 0x8001 | 動的データ交換管理ライブラリ (DDEML) が同期トランザクションの完了を待機している間に、入力イベントが発生しました。 DDEML の詳細については、「 動的データ交換管理ライブラリ」を参照してください。 |
MSGF_DIALOGBOX 0 | 入力イベントがメッセージ ボックスまたはダイアログ ボックスで発生しました。 |
MSGF_MENU 2 | 入力イベントがメニューで発生しました。 |
MSGF_SCROLLBAR 5 | 入力イベントがスクロール バーで発生しました。 |
wParam
型: WPARAM
このパラメーターは使用されません。
lParam [in]
型: LPARAM
MSG 構造体へのポインター。
戻り値
型: LRESULT
コードが 0 未満の場合、フック プロシージャは CallNextHookEx によって返される値を返す必要があります。
コードが 0 以上で、フック プロシージャがメッセージを処理しなかった場合は、CallNextHookEx を呼び出して、返される値を返すように強くお勧めします。そうしないと、WH_MSGFILTERフックがインストールされている他のアプリケーションはフック通知を受け取らず、結果として正しく動作しない可能性があります。 フック プロシージャがメッセージを処理した場合、システムがフック チェーンまたはターゲット ウィンドウ プロシージャの残りの部分にメッセージを渡さないようにするために、0 以外の値を返す可能性があります。
注釈
アプリケーションは、setWindowsHookExA SetWindowsHookExW関数の呼び出しで、WH_MSGFILTERフックの種類とフック プロシージャへのポインターを指定してフック プロシージャをインストールします。/
DDEML を使用し、同期トランザクションを実行するアプリケーションがディスパッチされる前にメッセージを処理する必要がある場合は、 WH_MSGFILTER フックを使用する必要があります。