WebBrowser控件,隔离和IE8 InPrivate模式

时间:2009-10-20 13:40:46

标签: internet-explorer-8 browser webbrowser-control

我需要在Web浏览器控件中运行一些自动化任务,但我似乎面临一些限制/未知,我不是100%确定如何解决。我正在运行的应用程序不是公开发布的,所以我可以强制执行IE8的先决条件。

GeckoFX(http://geckofx.org)会很棒,除非它没有像我在HtmlElement对象上使用WebBrowser的InvokeMember方法那样为我提供操作DOM的可接受方式。

WebKit.net会更好,但它的开发还为时过早,无法提供我需要的功能。

这使我得到了WebBrowser控件。 WebBrowser的问题在于它只是运行IE,这是一个包含所有进程的大型共享环境。换句话说,所有实例共享cookie,会话,代理设置等。

这就是我想要的:

  • 在自动化会话结束时,不会保留cookie / sessions / cache对象。而不是清除全局Temporary Internet Files文件夹,有没有办法让我访问IE8公开的InPrivate模式?

  • 如果有办法访问InPrivate浏览,我是否可以并排运行两个InPrivate模式会话?

理想情况下,我希望能够在单独的线程中运行多个独立的自动化任务,每个线程都有自己的私有浏览器控件,每个控件都有自己独立的会话/环境,在任务完成时不会保留。

对此有任何帮助或意见,我们将不胜感激!

2 个答案:

答案 0 :(得分:6)

不,您无法在InPrivate模式下运行WebBrowser控件;它根本不是受支持的场景。

是的,您可以在InPrivate模式下运行两个IE实例并将它们相互隔离。

使用命令行:iexplore.exe -private -nomerge

答案 1 :(得分:0)

这里有一些代码可以让您访问InPrivate IE

Friend Function Open(Optional ByVal Url As String = "about:blank", Optional ByVal WindowState As ProcessWindowStyle = ProcessWindowStyle.Hidden) As WebBrowser
On Error Resume Next

Dim Start As New ProcessStartInfo
Dim Windows = New ShellWindowsClass
Dim Count = Windows.Count
Start.FileName = "iexplore.exe"
Start.Arguments = "-private -nomerge " & Url
If WindowState = ProcessWindowStyle.Hidden Then
  Start.WindowStyle = ProcessWindowStyle.Minimized
Else
  Start.WindowStyle = WindowState
End If
Process.Start(Start)

Wait.Reset()
Do
  If Windows.Count > Count Then Exit Do
Loop While Wait.Waiting

Browser = Windows(Count)
Browser.Visible = (WindowState <> ProcessWindowStyle.Hidden)
Return Browser
End Function