標籤:重複 而在 net post gre hook api VS2010 資訊 運行
來源:https://www.cnblogs.com/grenet/archive/2010/12/07/1898840.html
1、Keyboard的HOOK函數分為兩種,WH_KEYBOARD_LL和WH_KEYBOARD。我們一般用第一種,全域的鍵盤鉤子,能攔截所有的鍵盤按鍵的訊息。
2、網上有人說,全域的鉤子要放在單獨的DLL中才能使用。我試了一下,不放在單獨的DLL中,在XP+VS2005下,調試和運行都沒有問題;在XP+VS2008下,調試會出錯,不過編譯後能運行;在WIN7+VS2010下,調試會出錯,編譯後能運行。這方面有研究的網友,望不吝賜教。
3、WH_KEYBOARD_LL和WH_KEYBOARD,這是兩種不同的鉤子,雖然最後都是KeyboardHookProc函數處理攔截的訊息,但是具體的每個參數的意義卻完全不一樣。
WH_KEYBOARD鉤子。KeyboardHookProc函數的各個參數意義如下:
nCode 訊息的類型,分HC_ACTION和HC_NOREMOVE
wParam 按鍵的虛擬鍵碼
lParam 按鍵的相關參數資訊,包括重複時間、按鍵的狀態(按下或彈起)等
WH_KEYBOARD_LL鉤子。KeyboardHookProc函數的各個參數意義如下:
nCode 訊息的類型,有HC_ACTION
wParam 按鍵的狀態(按下或彈起)WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP
lParam 指向KeyboardHookStruct結構的指標,該結構包含了按鍵的詳細資料。
可以看出,這兩種鉤子的參數的定義是完全不一樣的。而在之前的代碼中:Dim MyKeyboardHookStruct As KeyboardHookStruct = DirectCast(Marshal.PtrToStructure(lParam, GetType(KeyboardHookStruct)), KeyboardHookStruct)就是將該指標指向的內容複寫到指定的結構中。
Keyboard Hook API函數 參數說明