Merlin Asked:2020-09-19 17:33:21 +0800 CST2020-09-19 17:33:21 +0800 CST 2020-09-19 17:33:21 +0800 CST 如何检测软件击键? 772 在我的应用程序中检测程序化击键的方法有哪些?正在解决的问题:防止机器人。 java 1 个回答 Voted Best Answer Merlin 2020-09-19T20:41:55+08:002020-09-19T20:41:55+08:00 Windows 提供了一种内核级机制,允许您区分真实击键和模拟击键。让我们看看如何使用这种机制来检测答题器。 首先,我们需要在低级别捕获 keypress 事件。WinAPI 子例程将帮助我们解决这个问题SetWindowsHookEx。它的操作原理类似于 AutoIt 函数HotKeySet——它为各种操作系统事件安装一个处理程序。第一个参数 SetWindowsHookEx指定要捕获的事件类型。在我们的例子中,它应该等于WH_KEYBOARD_LL。 现在我们必须实现事件处理函数。它将一个类型的结构作为输入KBDLLHOOKSTRUCT,其中包含有关捕获的事件的完整信息。这个结构有一个字段 flags。如果它包含一个标志(即某个位置的位)LLKHF_INJECTED,则截获的击键是由 WinAPI 子例程SendInput或keybd_event. 如果标志LLKHF_INJECTED不存在,则事件源是键盘。flags更改结构字段相当困难KBDLLHOOKSTRUCT,因为它是在操作系统内核级别设置的。 https://ellysh.gitbook.io/video-game-bots-en/clickerbots/protection 从 AutoIt 的例子中我们可以看到,有一些方法可以检测软件击键,当然这并不能防止非常高级的 clicker bot,但是对于大多数简单的,高级的仍然需要使用统计方法来计算甚至机器学习。
https://ellysh.gitbook.io/video-game-bots-en/clickerbots/protection
从 AutoIt 的例子中我们可以看到,有一些方法可以检测软件击键,当然这并不能防止非常高级的 clicker bot,但是对于大多数简单的,高级的仍然需要使用统计方法来计算甚至机器学习。