1

我想SendKeys.SendWait("keys")用来将一些击键发送到最小化或不可见的应用程序。

实验上,它似乎只在我发送它的应用程序具有焦点并且可见时才起作用。我尝试在应用程序不可见时为其提供焦点,但无济于事。我希望我错过了什么。有没有办法做到这一点?

背景:

我试图强制不支持静默安装的第 3 方安装包尽可能安静和自动化。我联系了创建安装程序的人,他们没有启用静默安装,也不会发布新的一个。

安装程序是一个启动 Java AWT 的 InstallAnywhere 包。因此,Spy++ 不会向我显示按钮的 ID。我唯一得到的是主窗口的句柄,这让我相信我必须发送密钥SendKeys.SendWait("keys")才能获得所需的自动化。

我可以使用它来完成安装SendKeys.SendWait("%n")(对于“Alt-N”使其按下“下一步”按钮),但我想隐藏窗口。因为我不知道它何时完成特定阶段,所以我定期轮询它,然后按相应的键。这是一个巨大的黑客,但我还没有找到更好的选择。问题是,我不想为每个按键最小化然后恢复。一定有比这更好的方法,对吧?

在 Windows 7 上使用 C# .NET 4.0。

4

1 回答 1

1

不幸的是,键盘输入会进入活动窗口,因此任何模拟键盘输入的行为都会以相同的方式进行。

如果他们添加了辅助功能挂钩,那么您可以使用UI 自动化框架。这是Raymond 博客中的一个快速示例。

于 2013-10-02T15:29:15.457 回答