如何在所有应用程序中模拟键盘输入?

时间:2012-01-06 15:43:50

标签: c# windows input keyboard simulation

我正在编写一个应用程序(在C#中),作为其一部分必须模拟并向其他应用程序发送一些击键。我正在使用http://inputsimulator.codeplex.com/项目来模拟键,它适用于许多应用程序,但在某些应用程序中却没有 - 即Mortal Combat 4。

我已经开始搜索它了,发现许多答案从'不可能'到'你必须使用XXX库'等等。那些回答让我很害怕,甚至几乎相信我无法做到这一点那个时候,但是......

M $虚拟键盘有效。它适用于所有应用程序。所以有可能......你们中有谁聪明的人知道我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:6)

好的,我想我终于开始工作了。我使用了 Neal P 推荐的API Monitor,它显示了OSK调用和我之间的差异很小。过了一会儿,我试图让我的调用线程在使用按下和释放键发送消息之间休息一段时间,就是这样。

答案 1 :(得分:1)

虽然你能够达到目的,但是你实现它的方式并没有从根本上回答你的问题:如何在所有应用程序中模拟键盘输入?

在很多情况下,Microsoft API已经提到的常见用户模式不起作用,例如使用DirectInput API或受保护游戏的游戏应用程序。

我已经构建了一个library,可以在这种情况下提供帮助,它提供了一个简单的C API,可以在内部与设备过滤器驱动程序进行通信。它能够为基于DirectInput的游戏发送输入,并且还能够绕过一些游戏保护。我已经检查过,它仍然能够通过使用库的x64版本绕过一些已知的游戏保护。游戏保护通常只挂钩x86系统的API。好吧,最后,现在,2012年2月18日,这就是我所看到的情况。

答案 2 :(得分:0)

在MSDN上查看SendKeys