WINDOWS鍵盤事件上掛接監(jiān)控函數的方法

字號:

WINDOW下可進行掛接的過濾函數包括11種:
    WH_CALLWNDPROC 窗口函數的過濾函數
    WH_CBT 計算機培訓過濾函數
    WH_DEBUG 調試過濾函數
    WH_GETMESSAGE 獲取消息過濾函數
    WH_HARDWARE 硬件消息過濾函數
    WH_JOURNALPLAYBACK 消息重放過濾函數
    WH_JOURNALRECORD 消息記錄過濾函數
    WH_MOUSE 鼠標過濾函數
    WH_MSGFILTER 消息過濾函數
    WH_SYSMSGFILTER 系統(tǒng)消息過濾函數
    WH_KEYBOARD 鍵盤過濾函數
    其中鍵盤過濾函數是常用有用的過濾函數類型,不管是哪一種類型的過濾函 數,其掛接的基本方法都是相同的。 WINDOW調用掛接的反調函數時總是先調用掛接鏈首的那個函數,因此必須將鍵盤掛 鉤函數利用函數SetWindowsHookEx()將其掛接在函數鏈首。至于消息是否傳遞給函 數鏈的下一個函數是由每個具體函數功能確定的,如果消息需要傳統(tǒng)給下一個函 數,可調用API函數的CallNextHookEx()來實現,如果不傳遞直接返回即可。
    掛接函數可以是用來監(jiān)控所有線程消息的全局性函數,也可以是單獨監(jiān)控某一線程 的局部性函數。如果掛接函數是局部函數,可以將它放到一個.DLL動態(tài)鏈接庫中, 也可以放在一個局部模塊中;如果掛接函數是全局的,那么必須將其放在一個.DLL 動態(tài)鏈接庫中。掛接函數必須嚴格按照下述格式進行聲明,以鍵盤掛鉤函數為例:
    int FAR PASCAL KeyboardProc( int nCode,WORD wParam,DWORD lParam) 其中KeyboardProc為定義掛接函數名,該函數必須在模塊定義文件中利用EXPORTS命 令進行說明;nCode決定掛接函數是否對當前消息進行處理;wParam和lParam為具體 的消息內容。