简易的识别大小写的键盘钩子

这篇博客介绍了如何利用Windows钩子API实现一个简单的键盘钩子,以识别用户输入的大写或小写字母。通过GetKeyState和GetAsyncKeyState函数判断Shift键和CapsLock的状态,根据它们的状态进行异或操作,从而确定当前应捕获的大写或小写字母。同时,文章提出了在代码中遇到的问题:1. 为何判断按键状态的条件语句不起作用;2. 在VC中如何实现发送邮件功能。
摘要由CSDN通过智能技术生成

初学钩子方面的知识,回想到一些游戏盗号的程序也是这个原理,觉得有必要好好了解一下。

代码段是我找了一个基本的局部键盘钩子之后修改了一下,由于我发现得到的键盘码都是大写的,那么怎么判断用户输入的究竟是大写还是小写呢?

 

我们通过判断shift键和大写锁定键这两个键的状态来确定输入的是大写还是小写,用到的函数是GetKeyState和GetAsyncKeyState,判断CapsLock只能用前者,判断Shift只能用后者,GetAsyncKeyState在按下某键的同时调用,判断正在按下某键。GetKeyState则在按过某键之后再调用,它返回最近的键盘消息从线程的队列中移出时的键盘状态,判断刚按过了某键(请自行思考脉冲信号)。这两个键对应的虚拟键值是VK_SHIFT和VK_CAPITAL

 

使用GetKeyState获得返回值后,我们发现,当capslock按下时,返回-127,对应二进制是1111111100000001,没按下时返回0

shift键则是按下时为1,对应二进制 1000 0000 0000 0001,没按下时返回0

 

按照MSDN上面的说明

 

  • If the high-order bit is 1, the key is down; otherwise, it is up.
  • If the low-order bit is 1, the key is toggled. A key, such as the caps lock key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值