检测模拟键盘/鼠标输入

Dav*_*ave 1 c++ windows simulation winapi input

有没有办法检测 Windows 上的模拟键盘/鼠标输入。例如,用户在他的键盘上输入一些东西,而不是 sendKeys/PostMessage/屏幕键盘。有没有办法区分这两者?

编辑:也许一个例子会有所帮助。我正在制作游戏并希望区分真实输入与 WinAPI 合成键盘/鼠标消息。

Pau*_*aul 7

从 Windows 8 开始就有该GetCurrentInputMessageSource功能。您可以使用它,并检查originId枚举中的以下值:

IMO_INJECTED- 输入消息已由SendInput未在其清单文件中设置UIAccess属性的应用程序注入(通过函数)。TRUE


Rem*_*eau 6

区分“真实”输入和“模拟”输入(假设它是用keybd_event()/mouse_event()或生成的SendInput())的唯一方法是通过SetWindowsHookEx(). 在WH_KEYBOARD_LLWH_MOUSE_LL挂钩回调提供INJECTED了模拟输入的标志。