學習使用鉤子函數,一些問題記錄下來:
  
1 局部鉤子在使用鉤子的程序中定義,使用,只能鉤使用這個鉤子的程序的消息,有些鉤子只能做全局鉤子。具體見MSDN。
Hook Scope
WH_CALLWNDPROC Thread or global
WH_CALLWNDPROCRET Thread or global
WH_CBT Thread or global
WH_DEBUG Thread or global
WH_FOREGROUNDIDLE Thread or global
WH_GETMESSAGE Thread or global
WH_JOURNALPLAYBACK Global only
WH_JOURNALRECORD Global only
WH_KEYBOARD Thread or global
WH_KEYBOARD_LL Global only
WH_MOUSE Thread or global
WH_MOUSE_LL Global only
WH_MSGFILTER Thread or global
WH_SHELL Thread or global
WH_SYSMSGFILTER Global only
使用鍵盤鉤子可以完全鉤除消息,使得目標程序得不到鍵盤消息,在安裝鉤子的時候處理完了,不把它交給下一個鉤子。
    return CallNextHookEx() 的時候直接return 1,注意不能返回0。
剩下一個小問題,鉤子鉤到的消息中,可以使用GetKeyNameText(lParam,szText,iLen)得到鍵名,仔細看了lParam的說明和值,實在不明白怎么處理出來的,可能底層還有個對應表之類的東西吧。