在Wince下使用鉤子函式

2021-04-15 09:28:31 字數 753 閱讀 9706

1:什麼是鉤子

從字面上理解,鉤子就是想鉤住些東西,在程式裡可以利用鉤子提前處理些windows訊息。

例子:有乙個form,form裡有個textbox,我們想讓使用者在textbox裡輸入的時候,不管敲鍵盤的哪個鍵,textbox裡顯示的始終為「a」,這時我們就可以利用鉤子監聽鍵盤訊息,先往windows的鉤子鍊錶中加入乙個自己寫的鉤子監聽鍵盤訊息,只要一按下鍵盤就會產生乙個鍵盤訊息,我們的鉤子在這個訊息傳到textbox之前先截獲它,讓textbox顯示乙個「a」,之後結束這個訊息,這樣textbox得到的總是「a」。

訊息截獲順序:既然是截獲訊息,總要有先有後,鉤子是按加入到鉤子鍊錶的順序決定訊息截獲順序。就是說最後加入到鍊錶的鉤子最先得到訊息。

截獲範圍:鉤子分為執行緒鉤子和全域性鉤子,執行緒鉤子只能截獲本執行緒的訊息,全域性鉤子可以截獲整個系統訊息。我認為應該盡量使用執行緒鉤子,全域性鉤子如果使用不當可能會影響到其他程式。

2:使用鉤子

使用鉤子主要使用以下三個函式setwindowshookex:建立鉤子

callnexthookex:將訊息傳給鉤子鏈中的下乙個鉤子

unhookwindowshookex:釋放鉤子

對於建立鉤子的函式setwindowshookex,msdn給出其原形如下:

在Wince下使用鉤子函式

鉤子 1 什是鉤子 從字面上理解,鉤子就是想鉤住些東西,在程式裡可以利用鉤子提前處理些windows訊息。例子 有乙個form,form裡有個textbox,我們想讓使用者在textbox裡輸入的時候,不管敲鍵盤的哪個鍵,textbox裡顯示的始終為 a 這時我們就可以利用鉤子監聽鍵盤訊息,先往wi...

在Wince下使用鉤子函式

鉤子 1 什是鉤子 從字面上理解,鉤子就是想鉤住些東西,在程式裡可以利用鉤子提前處理些windows訊息。例子 有乙個form,form裡有個textbox,我們想讓使用者在textbox裡輸入的時候,不管敲鍵盤的哪個鍵,textbox裡顯示的始終為 a 這時我們就可以利用鉤子監聽鍵盤訊息,先往wi...

鉤子函式使用小結

鉤子函式使用小結 首先讓我們看看hook函式是怎麼安裝 呼叫和刪除的。應用程式通常是呼叫setwindowshookex 函式來進行安裝的,其函式的原型如下 setwindowshookex int idhook,hookproc lpfn,hinstance hmod,dword dwthread...