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

來源:互聯網
上載者:User

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動態連結程式庫中。掛接函數必須嚴格按照下述格式進行聲明,以鍵盤掛鈎函數為例:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.