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

权益双重加码!AI工具免费用+限时加赠 购周边限时加赠Coding Plan Lite,20+主流AI编程工具畅享,进阶之路更顺畅! 阅读详情

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

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

 

我们通过判断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 light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.

 

QT全局键盘检测(即失焦后依旧可以检测到键盘事件) 大家搜到这个博客,肯定是业务或者学习中需要该功能。我是在设计一个项目中,涉及到按下T进行语音说话时设计到的。qt自带的QKeyEvent事件,并不是全局有效,只有在鼠标点击该窗口后才会产生对应的鼠标事件。对此我特地查了很多CSDN和公司的论坛,总结出网上主要有四种方法。 1、就是使用grabKeyBoard(),经过测试,并不能达到预期的效果。这个实际效果是在多个窗口一起存在时,其中一个窗口需要一直获取键盘事件:可以在这个窗口中捕获键盘事件,即grabKeyboard(); 这样这个窗口可以一直获取键盘事件 阅读详情

相关推荐

C++实战:利用GetKeyState精准捕获键盘鼠标状态变化

本文详细介绍了如何在C++中使用GetKeyState函数精准捕获键盘和鼠标状态变化。从基础入门到实战技巧,涵盖了按键检测、组合键处理、鼠标状态捕获以及性能优化等关键内容,帮助开发者高效实现输入控制功能。特别适合游戏开发和Windows应用程序开发人员参考。

weixin_29022115的博客 430

C#检查键盘大小写锁定状态的方法

主要介绍了C#检查键盘大小写锁定状态的方法,涉及C#键盘操作的相关技巧,需要的朋友可以参考下

Windows键盘按键管理:从屏蔽、重映射到个性化定制全攻略

键盘输入是用户与计算机交互的基础,其核心原理在于系统将物理按键的扫描码转换为应用程序可识别的虚拟键码。通过修改系统底层的键位映射逻辑,可以实现对特定按键的屏蔽、禁用或功能重映射,这项技术对于提升操作效率、适配特殊硬件以及辅助无障碍使用具有重要价值。在Windows系统中,常见的应用场景包括禁用游戏中误触的Windows键、将不常用的CapsLock键改为更实用的Ctrl或Esc键,以及为损坏按键提供应急解决方案。本文聚焦于通过注册表修改、系统工具(如PowerToys)及脚本(如AutoHotkey)等方案

weixin_33766168的博客 690

c#.net 迄今最实用键盘钩子实例

c#.net 迄今最实用键盘钩子实例

[转]C# 键盘钩子,真正解决大小写/shift后字符获取问题

留着学习用,转自https://blog.csdn.net/wwh1004/article/details/79287647 作者:wwh1004  来源:CSDN  原文:https://blog.csdn.net/wwh1004/article/details/79287647  版权声明:本文为博主原创文章,转载请附上博文链接! 原文复制,如下:   本代码支持在无消息循环的线程上...

sunstar8921的博客 1671

键盘HOOK简单学习

对于系统钩子,该参数为钩子函数所在的DLL句柄。HOOK代码的构件中比较关键的就是回调函数,它意味着我的HOOK要实现什么样的功能,是仅拦截,还是将获取的信息传递到其他文件中之类的,现在好像还没必要看勾链,所以代码中的CallNextHookEx因该只是实现非目的进程不拦截信息。当我们通过exe建立钩子后,一旦有程序发生键盘输入,OS就会自动把我们提前传入句柄的DLL注入相关程序,进而调用回调函数,实现对消息的处理。idHook钩子的拦截消息类型,选择钩子程序的拦截范围,具体值参考文章结尾的消息类型。

2303_79822944的博客 2009

VBHOOK实现字符串区分大小写操作的完整代码方案

虽然已经很好用,但在项目中频繁重复写这么长的表达式也不够优雅。更好的做法是将其封装成语义清晰的自定义函数。graph TDA[开始 EqualExactCase] --> B{str1 或 str2 是否为 Null?B -- 是 --> C[返回 (str1 = str2)]B -- 否 --> D[调用 StrComp(..., vbBinaryCompare)]D --> E{返回值 == 0?E -- 是 --> F[返回 True]E -- 否 --> G[返回 False]

weixin_28968525的博客 952

Qt判断大小写键Caps Lock状态

重载KeyPressEvent() 和 KeyReleaseE

迎风的舵手 8811

键盘钩子

键盘钩子,C++实现。

Flood_flowing SYN 1645

用 SymPy StateSpace 建模力学系统:弹簧-质量-阻尼与双飞轮旋转问题实战

SymPy 的 Control 工具箱(`sympy.physics.control`)提供了完整的 `StateSpace` 类,支持用矩阵形式对线性时不变控制系统进行符号化建模,并可直接转换为传递函数。本篇以官方教程 [mechanics_problems.rst](https://link.gitcode.com/i/f6c63699190d6a80bceb58ca18512473) 中的两

gitblog_01176的博客 789

C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown/KeyUp事件之间的区别

组合键的判断通常在 KeyDown或 KeyUp事件中进行,通过判断修饰键属性(e.Control,e.Shift,e.Alt)和另一个键的 KeyCode来实现。需要注意的是,Print Screen(PrScrn)键无法通过标准的 KeyDown、KeyPress、KeyUp事件捕获。这是一个强大的开源库,它封装了底层API,让你能更轻松地实现模拟键盘输入和全局捕获,非常适合自动化测试、游戏脚本等场景。对于复杂的系统级组合键,有时在 KeyUp事件中判断会更准确,因为它能确保所有键都已完全按下。

日月清心 1172

HOOK小记

孙鑫VC++深入详解笔记 dwThreadId为当前线程ID时为进程内钩子。当为0时为全局钩子与运行的所有进程都相关,此时lpfn为一个DLL中的钩子过程,hMod为DLL句柄 HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // hook procedure HINSTAN

gsmfan1977的专栏 543

7个实用技巧!AutoHotkey键盘响应性能调优实战指南

AutoHotkey是一款功能强大的Windows自动化脚本工具,通过自定义热键和宏命令,帮助用户大幅提升操作效率。然而,随着脚本复杂度增加,键盘响应延迟问题可能会影响使用体验。本文将分享7个经过实战验证的AutoHotkey键盘响应性能优化技巧,帮助你打造流畅高效的自动化工作流。 ## 1. 合理选择热键类型:注册热键vs钩子热键 AutoHotkey提供两种热键处理机制:**注册热键**(

gitblog_01126的博客 324

Python Arcade游戏开发:键盘事件处理完全指南

Python Arcade游戏开发:键盘事件处理完全指南 键盘事件基础概念 在Python Arcade游戏开发框架中,键盘事件是游戏与玩家交互的重要方式之一。键盘事件代表了玩家在物理键盘上的操作行为。 当玩家按下键盘上的某个键时,Arcade会生成两个独立的事件: 按键按下事件(key press event) 按键释放事件(key release event) 这种设计让开发者能够精确控制...

gitblog_00799的博客 553

同时按左右键时你的键盘在打架:SOCD键盘重映射工具实战拆解

你在格斗游戏里想快速左右横跳,左手按住左方向、右手又按下了右方向,结果角色要么原地僵住、要么随机抽搐。这不是你手速的问题,而是"同时相反方向输入"(SOCD)没有被妥善处理。开源项目 Hitboxer(仓库代号 socd)正是为此而生的 SOCD 键盘重映射工具,它能在系统层面接管按键、按你的规则重写输入。这篇文章会讲清三件事:它到底改了什么、四种映射模式该怎么选,以及如何在自己机器上配好并避开新

gitblog_00120的博客 173

C#无焦点获取扫码枪输入

同时我发现运行一段时间后,键盘钩子会失效。后来手动修改windows注册表不行,然后用代码注册并使用invoke方法,解决了问题。程序稳定运行了几天,没有发现钩子失效的情况。单位因某些原因得搞个电子发票的自助打印程序,本着兴趣爱好,自己搞了一个。后来发现扫码到textbox经常有丢焦点或其他问题。改成了通过键盘钩子无焦点获取扫码枪输入。通过调用windows函数SetWindowsHookEx 注册全局钩子获取键盘输入。能识别英文大小写、数字和汉字。

tnb1992的博客 2034

Beeftext源码探秘:Qt框架下的文本替换引擎实现原理

Beeftext作为一款基于Qt框架开发的Windows文本片段工具,其核心价值在于提供高效智能的文本替换功能。本文将深入剖析其文本替换引擎的实现原理,揭示Qt框架如何支撑这一核心功能的实现。 ## 核心架构概览:Qt信号槽机制的应用 Beeftext的文本替换引擎采用了经典的MVC架构模式,主要由输入捕获、关键词匹配和文本替换三大模块构成。其中,**ComboManager**作为核心控制器

gitblog_00128的博客 719

Python键盘监听实战:从热键绑定到自动化任务触发

本文详细介绍了Python键盘监听技术的实战应用,从基础的热键绑定到自动化任务触发,涵盖了keyboard模块的安装、多键组合写法、动态热键管理以及高级应用如状态机模式设计和多进程架构。通过具体代码示例,帮助开发者快速实现快捷键触发自动化任务,提升工作效率。

weixin_29047919的博客 213

Keyviz:实时键盘按键可视化工具,提升操作演示与软件教学效率

在计算机交互领域,实时反馈是提升操作效率和降低理解成本的关键机制。其原理在于通过视觉化手段,将用户的输入行为即时转化为屏幕上的可见信息,从而弥合了操作与反馈之间的鸿沟。这一技术的核心价值在于增强交互的透明度和可追溯性,尤其在软件教学、操作演示和技能培训等场景中,能够显著提升信息传递的准确性和受众的理解速度。例如,在录制软件教程或进行线上演示时,将复杂的快捷键组合实时显示出来,可以避免观众因操作步骤隐蔽而产生困惑。Keyviz正是基于这一理念设计的开源工具,它通过轻量级的系统钩子捕获按键事件,并以高度可定制化

weixin_33857679的博客 325
上一篇: 写一个类似开机助手统计开机时间的小程序
下一篇: vc6下底层键盘钩子WH_KEYBOARD_LL未定义的解决方法
reggiekiller
博客等级 码龄18年 76粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值