2009-10-20 70 views
6

我需要在Web瀏覽器控件中運行一些自動化任務,但我似乎面臨着一些限制/未知數,我不能100%確定如何解決。我正在運行的應用程序不適用於公開發布,所以我可以強制安裝IE8的先決條件。WebBrowser控件,隔離和IE8 InPrivate模式

GeckoFX(http://geckofx.org)將是偉大的,除非它不提供一個可接受的方式來操縱DOM,因爲我會使用HtmlElement對象上的WebBrowser的InvokeMember方法。

WebKit.net會更好,但它的發展還爲時尚早,無法提供我需要的功能。

這讓我留下了WebBrowser控件。但WebBrowser的問題在於它只是運行IE,這是一個包含所有進程的大型共享環境。換句話說,所有實例共享的cookies,會話,代理服務器設置等

這是我想要的東西:

  • 在自動化會議結束,餅乾/會話/緩存中的對象不會被保留。我可以通過IE8訪問InPrivate模式,而不是清除全局Temporary Internet Files文件夾嗎?

  • 如果有訪問InPrivate瀏覽的方式,是否可以並行運行兩個並排的InPrivate模式會話?

理想情況下,我想能夠運行在單獨的線程多個相互隔離的自動化任務,每個都有自己的私人瀏覽器控件,每個都有自己的孤立會話/環境未在任務完成時保留。

任何幫助或輸入到這將不勝感激!

+0

你的意思是Windows窗體WebBrowser控件,WPF,或什麼? – 2010-03-12 03:01:10

+0

嗨,對不起,這不是提供任何幫助,但「WebBrowser雖然它只是運行IE瀏覽器,這是一個與所有進程大胖共享環境。換句話說,所有實例共享cookie,會話,代理設置,等等。」你從哪裏收集這些信息?據我瞭解,WebBrowser不會與其他進程共享Cookie ... – JonWells 2011-12-21 16:28:40

回答

6

不,您不能在InPrivate模式下運行WebBrowser控件;這根本不是受支持的方案。

是的,您可以在InPrivate模式下運行IE的兩個實例並將它們相互隔離。

使用命令行:IEXPLORE.EXE - 私人-nomerge

+0

doh。好,謝謝。 – 2009-10-24 19:07:27

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