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...