有没有一种方法可以模拟C++中的按键,没有软件可以说我实际上没有按下按键
Is there a method to simulate a key press in C++ in a way that no software could tell that i'm not actually pressing the key
我尝试过SendInput和keybd_event,有时它们工作得很好,但一些正在运行的程序无法识别我想使用c++代码按键。c++中是否有一个信号与我机械按键时发出的信号相同(这样就没有程序能分辨出区别)?
或者,如果这在C++中是不可能的,那么在任何其他编程语言中都可能吗?
c++中是否有一个信号与我机械按键时发出的信号相同(这样就没有程序能分辨出区别)?
这正是CCD_ 1和CCD_。它们将事件注入到实际键盘驱动程序将其事件插入的相同硬件输入队列中。它们以相同的方式进行处理和路由,因此系统的大多数人不知道物理事件和注入事件之间的区别。
然而,系统中有一个领域确实知道区别:通过SetWindowsHookEx(WH_KEYBOARD_LL)
的低级键盘挂钩。回调函数接收指向KBDLLHOOKSTRUCT
结构的指针,该结构的flags
成员包含用于注入事件的LLKHF_INJECTED
标志。回调可以选择放弃事件,这样它们就不会到达应用程序。
因此,任何对模拟按键没有反应的应用程序都可能被专门编码为忽略注入的输入。
防止这种情况的唯一方法(不需要编写自己的键盘驱动程序)是编写自己的低级键盘挂钩,并在安装了其他低级键盘挂钩后安装。这将把你的钩子放在钩子链的顶部。然后,它可以通过简单地而不是调用CallNextHookEx()
来跳过其他挂钩。钩子是按从最后到第一的顺序调用的。根据文件:
如果nCode大于或等于零,并且钩子过程没有处理该消息,强烈建议您调用CallNextHookEx并返回它返回的值否则,安装了WH_KEYBOARD_LL钩子的其他应用程序将不会收到钩子通知,并可能因此而出现错误行为。如果钩子过程处理了消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链的其余部分或目标窗口过程。
然而,如果一个应用程序遇到了使用键盘挂钩忽略注入事件的麻烦,它很可能也会考虑挂钩顺序,例如定期重新安装挂钩,将其放回挂钩链的顶部,以避免其他挂钩的干扰。
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么我的删除节点函数实际上没有删除节点?
- 其中降频广播实际上是有用的
- "delete"在 C++ 中实际上做了什么?
- C++:实际上不是从二进制文件中读取
- 用于在并发环境中访问 MMIO 的软件模式
- 有没有办法实现 fmu 导出到基于 c++ 的仿真软件以使用 fmi?
- 从C++调用 Python 并访问通过 Anaconda 安装的软件包
- 有关图像处理应用程序的硬件和软件安全性的建议
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 通过自制软件(macOS)安装的clang++:编译错误
- 如何在软件代码中使用ofstream创建文件
- 如何在Linux上正确发布C++软件(游戏)
- 尝试使用 RTool 在 R4.0 上安装软件包时出现编译错误
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 为什么我们实际上需要运行时多态性?
- Visual Studio Code输出被检测为恶意软件?
- 如何使用自制软件,cMake和cLion将库添加到C++项目中
- 我正在尝试编写将 ASCII 转换为十进制、添加并转换回 ASCII 的软件
- 有没有一种方法可以模拟C++中的按键,没有软件可以说我实际上没有按下按键