在家看網課,記筆記不方便。因而就想弄個鍵盤鎖,方便學習(在寢室也好把外接鍵盤放上去打遊戲)。ide
其實這東西挺簡單的,就三行代碼。函數
HHOOK hk; LRESULT CALLBACK kbproc(int nCod, WPARAM wParam, LPARAM lParam); void CMFCApplication1Dlg::OnBnClickedButton1() { hk = SetWindowsHookEx(WH_KEYBOARD_LL, kbproc, 0, 0);//安裝全局鉤子 } void CMFCApplication1Dlg::OnBnClickedButton2() { UnhookWindowsHookEx(hk);//卸載鉤子 } LRESULT CALLBACK kbproc(int nCod, WPARAM wParam, LPARAM lParam) { return 1;//返回一表示消息已經處理過了,應用程序就不會再處理了,至關於屏蔽消息 }
下面我來講下鉤子是怎麼回事:
正常狀況下,咱們在屏幕上的任何動做都會由操做系統生成待處理的消息,而後將它放入消息隊列中等待程序處理。
以下圖:學習
而HOOK就至關因而在操做系統和消息隊列之間的一個劫匪,先經由它處理,而後這些東西纔會被放入消息隊列。
以下圖:
spa
若是你只想屏蔽一些按鍵的話,回調函數就不能返回1,應該返回下一個鉤子。代碼以下:操作系統
//do something return CallNextHookEx(hk, nCod, 0, 0);