C++ 实现按键精灵 您所在的位置:网站首页 按键精灵按键码查询 C++ 实现按键精灵

C++ 实现按键精灵

2023-12-25 07:21| 来源: 网络整理| 查看: 265

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 工具便能自动获取标题。

[外链图片转存失败(img-FY9yjn2U-1564283699133)(./1564283592467.png)]



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有