【问题标题】:Win32 SendKeys.SendWait("keys") to minimized applicationWin32 SendKeys.SendWait("keys") 到最小化的应用程序
【发布时间】:2013-10-02 23:29:15
【问题描述】:

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

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

背景:

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

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

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

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

【问题讨论】:

    标签: c# winapi silent-installer


    【解决方案1】:

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

    如果他们添加了辅助功能挂钩,那么您可以使用UI automation framework。这是来自Raymond's blog 的快速示例。

    【讨论】:

    • 看起来他们没有在安装程序中添加辅助功能挂钩。不过感谢您的提示。
    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多