我需要在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模式会话?
理想情况下,我希望能够在单独的线程中运行多个独立的自动化任务,每个线程都有自己的私有浏览器控件,每个控件都有自己独立的会话/环境,在任务完成时不会保留。
对此有任何帮助或意见,我们将不胜感激!
答案 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