勾點

勾點是系統訊息處理機制中的一點,應用程式可以安裝副程式來監視系統中的訊息流量,並在到達目標視窗程式之前處理特定類型的訊息。

本節內容

名稱 描述
勾點概觀 討論應該如何使用勾點。
使用勾點 示範如何執行與勾點相關聯的工作。
勾點參考 包含 API 參考。

攔截函式

名稱 描述
CallMsgFilter 將指定的訊息和攔截程式碼傳遞至與 WH_SYSMSGFILTERWH_MSGFILTER 攔截程式相關聯的攔截程式。
CallNextHookEx 將勾點資訊傳遞至目前勾點鏈結中的下一個攔截程式。 攔截程式可以在處理攔截資訊之前或之後呼叫此函式。
CallWndProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 系統會先呼叫此函式,再呼叫視窗程式來處理傳送至執行緒的訊息。
CallWndRetProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 呼叫 SendMessage 函式之後,系統會呼叫此函式。 攔截程式可以檢查訊息;它無法修改它。
CBTProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 系統會在啟動、建立、終結、最小化、最大化、移動或調整視窗大小之前呼叫此函式;完成系統命令之前;從系統訊息佇列移除滑鼠或鍵盤事件之前;設定鍵盤焦點之前;或 與系統訊息佇列同步處理之前。 以電腦為基礎的訓練 (CBT) 應用程式會使用此攔截程式從系統接收有用的通知。
DebugProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 系統會先呼叫此函式,再呼叫與任何類型的勾點相關聯的攔截程式。 系統會傳遞有關要呼叫之攔截的資訊給 DebugProc 攔截程式,它會檢查資訊,並判斷是否允許呼叫攔截。
ForegroundIdleProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當前景執行緒即將變成閒置時,系統就會呼叫此函式。
GetMsgProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當 GetMessagePeekMessage 函式已從應用程式訊息佇列擷取訊息時,系統就會呼叫此函式。 將擷取的訊息傳回給呼叫端之前,系統會將訊息傳遞至攔截程式。
JournalPlaybackProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 一般而言,應用程式會使用此函式來播放 JournalRecordProc 攔截程式先前記錄的一系列滑鼠和鍵盤訊息。 只要已安裝 JournalPlaybackProc 攔截程式,就會停用一般滑鼠和鍵盤輸入。
JournalRecordProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 函式會記錄系統從系統訊息佇列中移除的訊息。 稍後,應用程式可以使用 JournalPlaybackProc 攔截程式來播放訊息。
KeyboardProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當應用程式呼叫GetMessagePeekMessage函式時,系統就會呼叫此函式,而且 (WM_KEYUP或WM_KEYDOWN) 處理鍵盤訊息。
LowLevelKeyboardProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當新的鍵盤輸入事件即將張貼到執行緒輸入佇列時,系統會呼叫此函式。
LowLevelMouseProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當新的滑鼠輸入事件即將張貼到執行緒輸入佇列時,系統就會呼叫此函式。
MessageProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 系統會在輸入事件發生在對話方塊、訊息方塊、功能表或捲軸之後呼叫此函式,但在處理輸入事件所產生的訊息之前。 攔截程式可以監視特定應用程式或所有應用程式所建立之對話方塊、訊息方塊、功能表或捲軸的訊息。
MouseProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 每當應用程式呼叫 GetMessagePeekMessage 函式,而且有要處理的滑鼠訊息時,系統就會呼叫此函式。
SetWindowsHookEx 將應用程式定義的攔截程式安裝到勾點鏈結中。 您會安裝攔截程式來監視系統是否有特定類型的事件。 這些事件與特定執行緒或與呼叫執行緒位於相同桌面上的所有線程相關聯。
ShellProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 函式會從系統接收 Shell 事件的通知。
SysMsgProc 搭配 SetWindowsHookEx 函式使用的應用程式定義或程式庫定義回呼函式。 系統會在輸入事件發生在對話方塊、訊息方塊、功能表或捲軸之後呼叫此函式,但在處理輸入事件所產生的訊息之前。 函式可以監視系統中任何對話方塊、訊息方塊、功能表或捲軸的訊息。
UnhookWindowsHookEx 移除 SetWindowsHookEx 函式安裝在勾點鏈結中的攔截程式。

勾點通知

名稱 描述
WM_CANCELJOURNAL 當使用者取消應用程式的日誌活動時,張貼至應用程式。 訊息會以 Null 視窗控制碼張貼。
WM_QUEUESYNC 由 CBT 應用程式傳送,將使用者輸入訊息與其他透過 WH_JOURNALPLAYBACK 程式傳送的訊息分開。

勾點結構

名稱 描述
CBT_CREATEWND 包含傳遞至 WH_CBT 勾點程式 CBTProc的資訊,再建立視窗。
CBTACTI加值稅ESTRUCT 包含在啟動視窗之前傳遞至 WH_CBT 勾點程式 CBTProc的資訊。
CWPRETSTRUCT 定義傳遞至 WH_CALLWNDPROCRET 勾點程式 CallWndRetProc的訊息參數。
CWPSTRUCT 定義傳遞至 WH_CALLWNDPROC 攔截程式 CallWndProc的訊息參數。
DEBUGHOOKINFO 包含傳遞至 WH_DEBUG 勾點程式 DebugProc的偵錯資訊。
EVENTMSG 包含傳送至系統訊息佇列的硬體訊息相關資訊。 這個結構用來儲存 JournalPlaybackProc 回呼函式的訊息資訊。
KBDLLHOOKSTRUCT 包含低階鍵盤輸入事件的相關資訊。
MOUSEHOOKSTRUCT 包含傳遞至WH_MOUSE攔截程式MouseProc滑鼠事件相關資訊。
MOUSEHOOKSTRUCTEX 包含傳遞至WH_MOUSE攔截程式MouseProc滑鼠事件相關資訊。
MSLLHOOKSTRUCT 包含低階滑鼠輸入事件的相關資訊。

SetWinEventHook