2013-06-12 88 views
4

我试图做一个应用程序,将密钥发送到外部应用程序,在这种情况下aerofly FS。我以前使用过SendKeys.SendWait()方法,但这一次,它并不像我想要的那样工作。我想发送一个“G”按键到应用程序并用记事本进行测试,我得到了G的。但在aerofly FS中根本没有收到任何东西。按键盘上的G确实可以工作。C#SendKeys.SendWait()并不总是工作

这是我的代码处理输入数据(从一个Arduino)的发送键击,

private void handleData(string curData) 
{ 
    if (curData == "1") 
     SendKeys.SendWait("G"); 
    else 
    { } 
} 
+0

@phadaphunk你的评论与问题是完全相反的。这些问题询问如何以自动方式将密钥发送给应用程序,而不是检索用户在应用程序中键入的密钥。 –

回答

2

我也遇到了外部应用中的SendKeys没有为我工作。

尽我所知,一些应用程序(如浏览器中的小应用程序)期望收到按键,然后是暂停,然后是按键,我不认为可以使用SendKeys完成此操作。

我一直在使用一个C#包装到AutoIt库,并发现它很容易使用。

这是我为integrating AutoIt into a C# project写的快速指南的链接。

一旦你的包装和参考,您可以发送“G”具有以下内容:

private void pressG() 
{ 
    AutoItX3Declarations.AU3_Send("{g}"); 
} 

或暂停,

private void pressG() 
{ 
    AutoItX3Declarations.AU3_Send("{g down}", 0); 
    AutoItX3Declarations.AU3_Sleep(50);   //wait 50 milliseconds 
    AutoItX3Declarations.AU3_Send("{g up}", 0); 
} 

AutoIt的,您还可以通过编程控制鼠标。

+0

虽然这确实工作得很好,但aerofly FS仍然没有注册任何输入。当在aerofly中对按钮进行映射时,它确实对按键做出响应,这意味着我不必释放按键来响应按键。但是,使用我的应用程序时,它什么也检测不到 – Robin

+0

好吧,我的坏。显然我以某种方式弄乱了我的代码。这工作出色,非常感谢你! – Robin