1

我想编写一个 powershell 脚本,它将 Internet Explorer 实例作为 com 对象打开,以便我可以操作它。问题是我需要使用参数运行它以确保 IE 作为新会话运行。

我需要传递的参数是 -noframemerging 我需要传递它,因此每个实例都是一个新会话。这是我用来启动实例的代码。

$ie = new-object -com "InternetExplorer.Application" 

如果有人能帮我弄清楚如何在 IE 中创建多个对象作为新会话,那就太棒了!

4

1 回答 1

2

这是我的解决方案:

$IEProcess = [System.Diagnostics.Process]::Start("iexplore", "-noframemerging")
Sleep -Seconds 1
$ie = $(New-Object -ComObject "Shell.Application").Windows() | ? {$_.HWND -eq $IEProcess.MainWindowHandle}

我使用 System.Diagnostic.Process 库启动了一个实例,我正在使用 Start-Process 但得到了一些奇怪的结果,这解决了这个问题。此时,我打开了一个带有 noframemerging 开关和一个指向进程的变量的 IE 实例。

在尝试引用它之前,我在那里睡了一个给 com 对象一个构造的机会。

然后我抓取所有的 windows com 对象并选择一个与我刚启动的进程中的句柄 (HWND) 相同的句柄 (HWND) 并将其分配给我的 $ie 变量。

最终结果是我有一个引用 Internet Explorer 的 com 对象的变量,该对象独立于所有其他会话。我特别需要这个的原因是我打开了许多 IE 实例并使用不同的用户帐户登录到一个网站,如果他们共享一个会话,则会跳过登录页面并且他们已经作为第一个登录的用户登录.

感谢所有的帮助家伙!

于 2013-08-19T22:30:19.793 回答