C++ 实现按键精灵 | 您所在的位置:网站首页 › 按键精灵按键码查询 › C++ 实现按键精灵 |
C++ 实现按键精灵
文章目录 C++ 实现按键精灵 1.keybd_event 实现 1.1 函数说明 1.2 关于扫描码的补充说明 1.3 示例代码 2.SendMessage 实现 2.1 函数说明 2.2 示例代码 2.3查找句柄 最近玩游戏需要用到按键精灵,Google 结果一堆不安全链接,担心有风险,索性就自己找资料写。
本文主要介绍两个函数 keybd_event 和 SendMessage ;两者都可以实现按键功能,SendMessage 的优势是支持后台。 1.keybd_event 实现参考 https://blog.csdn.net/yizhou2010/article/details/6178115参考 https://zhidao.baidu.com/question/579000692.html参考 https://blog.csdn.net/lhrsdl/article/details/52579286 1.1 函数说明keybd_event 是 windows 提供的模拟键盘 API 函数,使用该函数可以触发相应的键盘动作。 Keybd_event()函数能触发一个按键事件,也就是说会产生一个 WM_KEYDOWN 或 WM_KEYUP 消息。 函数原型如下: void keybd_event( BYTE bVk, // virtual-key code BYTE bScan, // hardware scan code DWORD dwFlags, // flags specifying various function options DWORD dwExtraInfo // additional data associated with keystroke );-参数 1 为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表); -参数 2 为扫描码,一般不用设置,用0代替就行; -参数 3 为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP"; -参数 4 一般也是置0即可。 1.2 关于扫描码的补充说明如果扫描码设置为 0 ,那么 keybd_event 在游戏中是失效的。 keybd_event 的本质是传递一个与 OEM 相关的硬件扫描码给系统,系统再将扫描码转换成虚拟键码,并模拟按键信号。关键就在 虚拟键码 上,它只是向操作系统发送按键码而已,实际硬件上并没有这个信号。 因此,游戏程序只需要判断这个按键信号是否来自于硬件,就能屏蔽我们的虚拟按键。解决方法也很简单,将扫描码由 0 替换为按键对应的扫描码即可。 虚拟键值表和扫描码表,搜索下很容易找到,这里放一张常用键值对照表。 1.3 示例代码 #include #include using namespace std; int main() { cout spy++ -> 搜索-> 查找窗口。拖动红框内的标志到你要操作的窗口的标题栏上,spy 工具便能自动获取标题。 |
CopyRight 2018-2019 实验室设备网 版权所有 |