您可能听说过 PawSense ,这是一款仅限Windows的实用程序,可防止输入击键当它认为键盘上有一只猫或其他动物输入无意义的输入时,如“zlxkkkkkkkk;”。在业余时间这似乎是一个有趣的项目,但我想知道实现它的一些细节。

我认为我可以使用硬编码启发式算法或使用某种模式识别算法(我之前已经接触过并且感觉很舒服)来进行模式识别。我的问题是关于事物的系统编程方面以及阻止输入的逻辑。

如果您发现猫类型,您需要让您的应用程序观察输入并提出挑战。你会保留最近一次击键的缓冲区,只有在非猫打字的情况下才让它们通过吗?或者,如果发生了猫类型的输入,您是否只能在阻止输入之前通过一小部分?您想要使用的实际逻辑是什么?

至于在C#中阻止输入的实际机制,还有其他关于此网站的问题。重申一下,我的问题是你用来检测和阻止猫打字的逻辑。

有帮助吗?

解决方案

我会等到我认为键盘上有一只猫,然后阻止输入,因为缓冲区可能会有问题。

例如,如果我正在键入,并快速切换窗口,键入,您将如何确定击键的位置?

尽可能保持简单。

其他提示

您需要考虑引入 WIN32系统范围的挂钩。这个 MSDN文章涵盖了这一点(注意它指定了两个应用程序)或线程级挂钩和系统范围的挂钩)。

一旦你理解了这一点,你就需要捕获几个键盘相关的消息,WM_KEYUP肯定,还有一些其他WM_KEYxxxx消息,这取决于你的需要。)

然后,您需要引入决定键击是有效还是乱码的逻辑,并传递消息(这样它们最终可以传播到具有焦点的应用程序)或忽略它们。

在不知道这一点的情况下,我会开始根据按键的长度而不是实际按下的按键,认为动物不会简单地按一个键并快速释放,然后另一个等等,但更有可能暂停一组钥匙。

因此,如果您可以简单地按下按键,我认为这可能有用。

考虑加载。我会从以下内容开始:

  1. 等待没有用户活动:2分钟时间。
  2. 启动您的应用
  3. 听键盘点击
  4. 匹配字典中存在的键入的键
  5. 六或七之后阻止键盘。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top