程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> WINDOWS鍵盤事件的掛鉤監控原理及其應用技術

WINDOWS鍵盤事件的掛鉤監控原理及其應用技術

編輯:vc教程

WINDOW的消息處理機制為了能在應用程序中監控系統的各種事件消息,提供了掛接各種反調函數(HOOK)的功能。這種掛鉤函數(HOOK)類似擴充中斷驅動程序,掛鉤上可以掛接多個反調函數構成一個掛接函數鏈。系統產生的各種消息首先被送到各種掛接函數,掛接函數根據各自的功能對消息進行監視、修改和控制等,然後交還控制權或將消息傳遞給下一個掛接函數以致最終達到窗口函數。WINDOW系統的這種反調函數掛接方法雖然會略加影響到的運行效率,但在很多場合下是非常有用的,通過合理有效地利用鍵盤事件的掛鉤函數監控機制可以達到預想不到的良好效果。

一、在WINDOWS鍵盤事件上掛接監控函數的方法

WINDOW下可進行掛接的過濾函數包括11種:

WH_CALLWNDPROC 窗口函數的過濾函數

WH_CBT 計算機培訓過濾函數

WH_DEBUG 調試過濾函數

WH_GETMESSAGE 獲取消息過濾函數

WH_HARDWARE 硬件消息過濾函數

WH_JOURNALPLAYBACK 消息重放過濾函數

WH_JOURNALRECORD 消息記錄過濾函數

WH_MOUSE 鼠標過濾函數

WH_MSGFILTER 消息過濾函數

WH_SYSMSGFILTER 系統消息過濾函數

WH_KEYBOARD 鍵盤過濾函數

其中鍵盤過濾函數是最常用最有用的過濾函數類型,不管是哪一種類型的過濾函數,其掛接的基本方法都是相同的。

WINDOW調用掛接的反調函數時總是先調用掛接鏈首的那個函數,因此必須將鍵盤掛鉤函數利用函數SetWindowsHookEx()將其掛接在函數鏈首。至於消息是否傳遞給函數鏈的下一個函數是由每個具體函數功能確定的,如果消息需要傳統給下一個函數,可調用API函數的CallNextHookEx()來實現,如果不傳遞直接返回即可。掛接函數可以是用來監控所有線程消息的全局性函數,也可以是單獨監控某一線程的局部性函數。如果掛接函數是局部函數,可以將它放到一個.DLL動態鏈接庫中,也可以放在一個局部模塊中;如果掛接函數是全局的,那麼必須將其放在一個.DLL動態鏈接庫中。掛接函數必須嚴格按照下述格式進行聲明,以鍵盤掛鉤函數為例:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved