首页 > 编程语言 > 详细

C++:利用全局钩子实现键盘锁

时间:2020-03-15 11:57:11      阅读:81      评论:0      收藏:0      [点我收藏+]

在家看网课,记笔记不方便。于是就想弄个键盘锁,方便学习(在寝室也好把外接键盘放上去打游戏)。

其实这东西挺简单的,就三行代码。

技术分享图片
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;//返回一表示消息已经处理过了,应用程序就不会再处理了,相当于屏蔽消息
}
View Code

下面我来说下钩子是怎么回事:
正常情况下,我们在屏幕上的任何动作都会由操作系统生成待处理的消息,然后将它放入消息队列中等待程序处理。
如下图:

技术分享图片

 

而HOOK就相当于是在操作系统和消息队列之间的一个劫匪,先经由它处理,然后这些东西才会被放入消息队列。
如下图:
技术分享图片

 

 如果你只想屏蔽一些按键的话,回调函数就不能返回1,应该返回下一个钩子。代码如下:

//do something
return CallNextHookEx(hk, nCod, 0, 0);

 

C++:利用全局钩子实现键盘锁

原文:https://www.cnblogs.com/AD-milk/p/12496522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!