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

C# 是否存在一种快速且可预测的“SendKeys”替代方案?,c#,.net,performance,keypress,sendkeys,C#,.net,Performance,Keypress,Sendkeys,我正试图为在线游戏编程一个AI,它通过抓取游戏区域的屏幕区域,分析像素,然后用一系列按键来响应。基本上是这样的: 程序获取当前帧的图片 程序分析像素数据并相应地进行规划 程序发送firefox相应的按键来响应 我目前在第3步-发送按键时遇到问题。因为我正在为游戏构建人工智能,它必须实时发送按键。但是,我注意到使用SendKeys.Send()时 在我发出请求和firefox执行请求之间有明显的延迟 它的不可预测性和缓慢,按键几乎从来没有执行的时间 移动缓慢且起伏,因为每个经过处理的按键之间

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

  • 程序获取当前帧的图片
  • 程序分析像素数据并相应地进行规划
  • 程序发送firefox相应的按键来响应
我目前在第3步-发送按键时遇到问题。因为我正在为游戏构建人工智能,它必须实时发送按键。但是,我注意到使用SendKeys.Send()时

  • 在我发出请求和firefox执行请求之间有明显的延迟
  • 它的不可预测性和缓慢,按键几乎从来没有执行的时间
  • 移动缓慢且起伏,因为每个经过处理的按键之间都有很大的间隙
有没有任何方法可以预测地将按键事件实时发送到程序(如firefox)?就像我想用一个程序来模拟按键一样,我想的是一个命令,它的作用与我在键盘上按一个键时的作用完全相同,而不是一种不可靠的、延迟的方法来将按键发送到当前关注的对象。如果有人能简单地解决这个问题,或者我能做些什么不同的事情,那就太好了?谢谢

包装器库使用SendInput而不是SendKeys

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


在这里尝试一些答案,尤其是这里,谢谢-那么,我假设inputsimulator更快吗?对于其他答案,我环顾四周,尝试了很多答案,尽管sendkeys是唯一一个真正接近工作的答案…谢谢!如果你在回答中写下了这一点(可能有一个代码示例…?),那么我可以投票并接受它。:)