次の方法で共有


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 フックを使用する必要があります。

関連項目

CallNextHookEx

SetWindowsHookEx

Msg

フック