【问题标题】:Launching Internet Explorer from a PowerShell script从 PowerShell 脚本启动 Internet Explorer
【发布时间】:2014-12-31 01:16:14
【问题描述】:

我已经将一些 PS 代码放在一个更大的 PS 脚本中执行以下操作:

  • 测试 IE 进程是否已在运行
  • 如果 IE 尚未运行,请启动一个新进程,在该进程中打开站点一,然后在该进程的前台选项卡中打开站点二
  • 让IE进程全屏

    If (-Not (Get-Process IExplore -ErrorAction SilentlyContinue))
        {
        $navOpenInForegroundTab = 0x10000;
        $ie = New-Object -Com InternetExplorer.Application
        $ie.Visible = $True;
        $ie.Navigate2("https://stackoverflow.com");
        $ie.Navigate2("http://superuser.com", $navOpenInForegroundTab);
    
    $sw = @'
    [DllImport("user32.dll")]
    public static extern int ShowWindow(int hwnd, int nCmdShow);
    '@
    
        $type = Add-Type -Name ShowWindow2 -MemberDefinition $sw -Language CSharpVersion3 -Namespace Utils -PassThru
        $type::ShowWindow($ie.hwnd, 3) # 3 = maximize 
        }
    

似乎一切正常,除了这段代码运行后,它在 PowerShell 窗口中显示数字 24(我从命令行启动 PS)。谁能告诉我为什么在运行上述代码时显示 24 并且可以阻止它显示吗?

【问题讨论】:

  • 这可能是 ShowWindow 函数的返回值。如果是这种情况,你会写$type::ShowWindow($ie.hwnd, 3) | out-null
  • 是的,它来自 ShowWindow。如果它是一个非零值,则该窗口以前没有隐藏,即它是可见的,这就是它的意思。更多信息在这里:msdn.microsoft.com/en-us/library/windows/desktop/…
  • 非常好 - 谢谢。这就是发生的事情,脚本现在运行 B-E-A-UTIFULLY
  • @STGdb 将其发布为答案并接受

标签: powershell


【解决方案1】:

这是 ShowWindow 函数的返回值。要忽略结果,请使用:

$type::ShowWindow($ie.hwnd, 3) | out-null

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多