GetMsgProc 函式
-描述
與 SetWindowsHookExA/SetWindowsHookExW 函式搭配使用的應用程式定義或連結庫定義的回呼函式。 每當 GetMessage 或 PeekMessageA/PeekMessageW 函式從應用程式訊息佇列擷取訊息時,系統就會呼叫此函式。 將擷取的訊息傳回給呼叫端之前,系統會將訊息傳遞至攔截程式。
HOOKPROC 類型會定義這個回呼函式的指標。 GetMsgProc 是應用程式定義或連結庫定義函式名稱的佔位元。
LRESULT CALLBACK GetMsgProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
-參數
程式代碼 [in]
類型: int
指定攔截程式是否必須處理訊息。 如果程式代碼HC_ACTION,攔截程式必須處理訊息。 如果程式代碼小於零,攔截程式必須將訊息傳遞至 CallNextHookEx 函式,而不需進一步處理,而且應該傳回 CallNextHookEx 傳回的值。
wParam [in]
類型: WPARAM
指定訊息是否已從佇列中移除。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
PM_NOREMOVE 0x0000 | 訊息尚未從佇列中移除。 (稱為 的應用程式PeekMessage 函式,指定 PM_NOREMOVE 旗標。) |
PM_REMOVE 0x0001 | 訊息已從佇列中移除。 (名為 的應用程式GetMessage,或稱為 PeekMessage 函式,並 指定PM_REMOVE 旗標。 |
lParam [in]
類型: LPARAM
MSG 結構的指標,其中包含訊息的詳細數據。
-返回
如果程式代碼小於零,攔截程式必須傳回 CallNextHookEx 所傳回的值。
如果 程式代碼 大於或等於零,強烈建議您呼叫 CallNextHookEx 並傳回它傳回的值;否則,安裝 WH_GETMESSAGE 攔截的其他應用程式將不會收到攔截通知,因此可能會不正確。 如果攔截程式未呼叫 CallNextHookEx,則傳回值應該是零。
-言論
GetMsgProc 攔截程式可以檢查或修改訊息。
攔截程式將控制權傳回系統之後,GetMessage 或 PeekMessageA/PeekMessageW 函式會將訊息連同任何修改傳回至原本呼叫它的應用程式。
應用程式會在呼叫 SetWindowsHookExA/SetWindowsHookExW 函式時,指定WH_GETMESSAGE勾點類型和攔截程式的指標,以安裝此攔截程式。