在家看网课,记笔记不方便。因而就想弄个键盘锁,方便学习(在寝室也好把外接键盘放上去打游戏)。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);