有没有办法在Windows上检测模拟键盘/鼠标输入?例如,用户在他的键盘上输入一些东西,而不是sendKeys/PostMessage/屏幕上的键盘。有什么方法可以区分这两者吗?
编辑:也许举个例子会有所帮助。我正在制作一个游戏,想要区分真实输入和WinAPI合成键盘/鼠标消息。
发布于 2010-12-29 20:34:58
我可能错了,但屏幕键盘(和其他模拟用户输入的应用程序)很可能使用SendInput应用编程接口:
SendInput在输入堆栈的最底层运行。它只是进入键盘和鼠标驱动程序用来告诉窗口管理器用户已生成输入的相同输入机制的后门。来源:http://blogs.msdn.com/b/oldnewthing/archive/2010/12/21/10107494.aspx
因此,可能无法判断输入是否来自“真正的”键盘。
发布于 2018-10-23 06:34:05
区分“真实”输入和“模拟”输入(假设它是用keybd_event()/mouse_event()或SendInput()生成的)的唯一方法是通过SetWindowsHookEx()使用低级键盘/鼠标挂钩。WH_KEYBOARD_LL和WH_MOUSE_LL挂钩回调为模拟输入提供INJECTED标志。
发布于 2018-11-23 04:58:41
从Windows8开始,就有了GetCurrentInputMessageSource函数。您可以使用它,并检查originId枚举的下列值:
IMO_INJECTED-输入消息已由未在其清单文件中将UIAccess属性设置为TRUE的应用程序注入(通过SendInput函数)。
https://stackoverflow.com/questions/4553777
复制相似问题