4

我正在尝试制作一个将密钥发送到外部应用程序的应用程序,在这种情况下是 aerofly FS。我之前曾成功使用过 SendKeys.SendWait() 方法,但是这一次,它并没有按照我想要的方式工作。我想向应用程序发送一个“G”键击并用记事本测试它我确实得到了 G。但在 aerofly FS 中,根本没有收到任何东西。不过,在键盘上按 G 确实有效。

这是我处理输入数据(来自 Arduino)和发送击键的代码,

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

1 回答 1

2

我也遇到过 SendKeys 对我不起作用的外部应用程序。

据我所知,某些应用程序,例如浏览器中的小程序,希望收到按键按下,然后是暂停,然后是按键,我认为 SendKeys 无法做到这一点。

我一直在使用 AutoIt 库的 C# 包装器,并且发现它非常易于使用。

这是我为将 AutoIt 集成到 C# 项目而编写的快速指南的链接。

获得包装器和引用后,您可以发送带有以下内容的“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 还允许您以编程方式控制鼠标。

于 2013-06-12T18:53:55.850 回答