【问题标题】:Reliable way to restore/maximize application window from VBscript从 VBscript 恢复/最大化应用程序窗口的可靠方法
【发布时间】:2012-12-06 09:31:13
【问题描述】:

我有 Visual Basic 脚本,其中包括创建 IE 实例、隐藏它、操作它,然后使其对用户可见。

很遗憾,由于不明原因,恢复功能不适用于所有 PC。当前代码是:

objectIE.Visible = True
wshShell.AppActivate objectIE 'which is I think wrong as objectIE is not PID.
wscript.sleep timoutSleep
wshShell.SendKeys restWindow 'which is "% r" and will not work on all locales :(

我认为问题出在这一行:

wshShell.AppActivate objectIE

我想在这里我需要将 PID 传递给 AppActivate 方法。

问题:如何获取IE对象的PID?还是wshShell.AppActivate objectIE 是正确的,但我看错了方向?

附:我不能使用应用程序的标题,因为它不是唯一的:(

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    您可以使用 pInvoke 从 PowerShell 脚本调用 Win32 方法。 互联网上到处都是这样的例子。对于 PostMessage,这里有一个示例: SendMessage is causing script to hang

    为此,您需要在字符串中构建 PSScript 行,然后使用例如执行它。 powershell.exe -ExecutionPolicy Unrestricted -command "get-process -Name iexplore"

    并提取生成的 Id,然后将其发送到调用 PostMessage() 的脚本,甚至将所有命令放入单个(短)脚本中。

    【讨论】:

    • 您可以使用PowerShell来获取基于HWND的PID(这是VB中IE对象的一个​​属性)。然后您可以从 Stephen 建议的相同 PowerShell 中调用 Win32 方法。关于如何从 HWND 获取 PID 参见:stackoverflow.com/questions/10202512/….
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多