如何知道是否模拟了鼠标点击?当鼠标单击由程序或真实鼠标设备发送时
...我正在为游戏编程系统检测,以避免仅接受合法鼠标点击的机器人,自动点击等
这取决于您正在编写的应用程序类型,但如果可以,我会观察光标移动,而不是点击.人体鼠标移动具有不均匀的速度,反应时间,不精确度(点击按钮的不同坐标等等).
此外,您可以通过随机要求难以编写脚本的交互来防御机器人.例如:如果脚本依赖于按钮始终处于相同位置,我会确保在尝试保持直观时,对话框每次都会弹出略微不同的位置.
否则:无法检测鼠标是真实的还是非常好的模拟鼠标.Windows HID/MacOS/Linux驱动程序层抽象出Mice,TrackPens,TrackBalls,绘图板,触摸屏......当然还有脚本鼠标之间的区别......
虽然博客文章本身就是一个不同的问题,但我会向你推荐Raymond Chen的优秀Old Old Thing.在这篇特定的博客文章中,他谈到了进入应用程序的消息参数的有效性,但也指出:
没有必要讨论消息的发送者是否正在玩弄伎俩和骗你的可能性,因为(1)你的程序应该与诡计一致并回应假的菜单消息,就好像它们是真正的菜单消息一样,因为(2)无论如何都没有办法说你被骗了.要检测说谎,你必须能够阅读向你发送信息的程序员的心态.
基本上,我们的论点是,您应该像鼠标点击一样响应鼠标点击,无论这些点击是如何生成的.