Description
一個應用程式定義或函式庫定義的回調函式,搭配 SetWindowsHookExA/SetWindowsHookExW 函式使用。 當 GetMessage 或 PeekMessageA/PeekMessageW 函式從應用程式訊息佇列取得訊息時,系統會呼叫此函式。 在將取回訊息回傳給呼叫者之前,系統會將訊息傳給掛鉤程序。
HOOKPROC 型別定義了指向此回調函式的指標。 GetMsgProc 是應用程式定義或函式庫定義函式名稱的佔位符。
LRESULT CALLBACK GetMsgProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
參數
代碼 [in]
類型:int
指定 hook 程序是否必須處理該訊息。 若程式碼HC_ACTION,掛鉤程序必須處理該訊息。 若 程式碼 小於零,掛鉤程序必須將訊息傳給 CallNextHookEx 函式,且不應再處理,且應回傳 CallNextHookEx 回傳的值。
wParam [in]
類型: WPARAM
指定訊息是否已從佇列中移除。 此參數可以是下列其中一個值。
| 價值觀 | Meaning |
|---|---|
| PM_NOREMOVE 0x0000 | 訊息尚未從排隊列中移除。 (一個稱為 PeekMessage 函式的應用程式,指定 PM_NOREMOVE 標誌。) |
| PM_REMOVE 0x0001 | 該訊息已被從排隊列中移除。 (一個名為 GetMessage 的應用程式,或稱為 PeekMessage 函式,指定 PM_REMOVE 標誌。) |
lParam [在]
類型: LPARAM
指向包含訊息細節的 MSG 結構的指標。
退貨
若 程式碼 小於零,掛鉤程序必須回傳 CallNextHookEx 回傳的值。
如果 程式碼 大於或等於零,強烈建議你呼叫 CallNextHookEx 並回傳它回傳的值;否則,安裝 WH_GETMESSAGE 鉤子的其他應用程式將無法收到鉤子通知,可能導致行為異常。 如果 hook 程序沒有呼叫 CallNextHookEx,則回傳值應該為零。
備註
GetMsgProc 的掛鉤程序可以檢查或修改訊息。
在 hook 程序將控制權回傳給系統後, GetMessage 或 PeekMessageA/PeekMessageW 函式會將訊息及任何修改內容回傳給最初呼叫該訊息的應用程式。
應用程式透過呼叫 SetWindowsHookExA/SetWindowsHookExW 函式,指定 WH_GETMESSAGE 鉤子類型及指向鉤子程序的指標來安裝此鉤子程序。