我試圖通過如何在IE的當前窗口中打開 - C#
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
到在IE中打開一些然而,這並不佔事實上窗口已經打開,如果是那麼我只想使用它。這怎麼能做到?
我試圖通過如何在IE的當前窗口中打開 - C#
System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl);
到在IE中打開一些然而,這並不佔事實上窗口已經打開,如果是那麼我只想使用它。這怎麼能做到?
在CodeProject上,存在着一個項目,「Capturing the Running IE Instances in C#」
它可以讓你做到這一點的方法之一。
使用WIN32 API,可以枚舉打開的窗口,並對它們進行過濾以獲取IE的運行實例。
推薦您自動檢索
你可以嘗試這樣的事情:
var p = new System.Diagnostics.Process();
var s = new System.Diagnostics.ProcessStartInfo(uniquePartOfUrl);
s.UseShellExecute = true;
s.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo = s;
p.Start();
我沒有編譯器方便,現在對其進行測試,但這個想法是,它應該簡單地告訴操作系統「打開此網址」和讓操作系統決定如何使用現有的窗口,具體取決於應用程序。值得一試。
IMO,打開一個網頁,最好的方法是使用下面的語法:
Process.Start("http://www.mysite.com");
這樣的操作系統將在用戶的默認瀏覽器中打開它,並使用瀏覽器選項卡功能,如果它有該能力。當我已經選擇了我想要使用的瀏覽器時,沒有任何事情讓我更加惱火(好吧,也許有些事情會這樣做),這些程序迫使我無緣無故地使用特定的瀏覽器。在這裏尊重用戶的決定是件好事。
重用IE的現有的窗口,你可以在2種不同的方式
找到IE的當前實例,然後使用該實例中打開它接近它。這由@LaGrandMere提供的答案覆蓋
使用內置設置設置IE以使其自身重用。要使用此方法,您可以按照this Microsoft support article中給出的說明進行操作。
爲什麼你需要一個窗口句柄? IE的API是COM,如果你想控制新的窗口/標籤,你應該要求IWebBrowser2(儘管你可以從IWebBrowser2獲得窗口/標籤句柄) – 2010-12-15 20:42:19