是否存在“SendKeys”的快速且可预测的替代方案?

Posted

技术标签:

【中文标题】是否存在“SendKeys”的快速且可预测的替代方案?【英文标题】:Does a fast and predictable alternative to `SendKeys` exist? 【发布时间】:2015-03-25 01:29:19 【问题描述】:

我正在尝试为在线游戏编写一个 AI,它的工作原理是抓取游戏区域的屏幕区域,分析像素,然后通过一系列按键响应。基本上是这样的:

程序抓取当前帧的图片 程序分析像素数据并据此制定计划 程序向 firefox 发送相应的按键响应。

我目前在第 3 步遇到问题 - 发送按键。由于我正在为游戏构建 AI,因此它必须实时发送按键。但是,我注意到 SendKeys.Send()...

在我发出请求和 Firefox 执行请求之间存在明显的延迟 不可预知且缓慢,按键几乎从不准时执行 移动缓慢且不连贯,因为每次处理的按键之间都有很大的间隙

有没有什么方法可以将按键事件实时发送到程序(例如 firefox)?就像当我考虑使用程序模拟按键时一样,我正在考虑一个命令,它会执行与我在键盘上按下一个键时相同的确切操作,而不是一种不可靠且延迟的发送方法按键到当前关注的任何内容。如果有人对这个问题有一个简单的解决方案,或者对我可以做些什么不同的事情有任何意见,那就太好了?谢谢!

【问题讨论】:

在这里***.com/questions/5028872/… 尝试一些答案,尤其是这个inputsimulator.codeplex.com 也在这里***.com/questions/1138606/… 谢谢 - 我猜是 inputsimulator 更快吗? 对于其他答案 - 我环顾四周并尝试了很多答案,尽管 sendkeys 是唯一真正接近工作的答案...... 谢谢!如果您将其写在答案中(可能带有代码示例...?),那么我可以投票并接受它。 :) 【参考方案1】:

Windows Input Simulator 包装库使用 SendInput 而不是 SendKeys。

SendInput 通常是发送击键和 鼠标点击,因为其卓越的速度和可靠性。大多数下 条件下,SendInput 几乎是瞬时的,即使发送很长 字符串。由于 SendInput 速度如此之快,因此也更可靠。

AutoHotKey Send

【讨论】:

以上是关于是否存在“SendKeys”的快速且可预测的替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

在远程桌面上运行时替代 SendKeys?

访问 VBA SendKeys 替代方案

.NET(C#) SendKeys模拟键盘按键不生效使用WinAPI的替代方案

VB.NET SendKeys 的替代品

PyTorch 中是不是存在干净且可扩展的 LSTM 实现? [关闭]

linux条件判断之判断文件是否存在