2010-08-09 46 views
0

當我運行這個,然後進入任務管理器,並手動結束其中一個iexplore實例(有2大概因爲現在IE瀏覽器現在也使用多個進程),我看到一個錯誤彈出框,說一個選項卡已被恢復。但是,由於我的流程設置,iexplore本身是不可見的。因此,我不認爲應該顯示彈出式氣球恢復消息。這是IE瀏覽器的錯誤,在顯示此消息之前沒有檢查它是否可見,或者這是Windows/.NET不阻止IE顯示任何「窗口」(在這種情況下爲氣球)的錯誤?這是誰的錯誤 - IE還是Windows/.NET?

Process process = new Process 
{ 
    StartInfo = 
    { 
    CreateNoWindow = false, 
    FileName = "iexplore.exe", 
    UseShellExecute = true, 
    ErrorDialog = false, 
    WindowStyle = ProcessWindowStyle.Hidden 
    } 
}; 

process.Start(); 

如果這是一個錯誤,我在哪裏報告它?連接?

+0

我認爲它是這樣設計的。 IE注意到兄弟進程停止並假定它崩潰並運行恢復。 – Andrey 2010-08-09 15:07:51

+0

對不起,我認爲你錯過了這一點。我知道泡沫是關於什麼的。我不知道爲什麼當我向IE提供要隱藏的參數並且IE本身被隱藏時它顯示出來......只是沒有這個小小的彈出窗口。 – Chad 2010-08-09 15:36:24

回答

1

我很驚訝這一切都可以應用,非控制檯模式的應用程序經常忽略所請求的WindowStyle。例如,嘗試使用notepad.exe。

但是,這是IE中的一個缺陷。除了將請求的窗口樣式傳遞到已啓動的進程之外,Process類沒有其他功能。該進程通過WinMain()的nShowCmd()參數獲取此請求。

Connect有一個IE瀏覽器的反饋頻道。但他們只會接受IE9的報告,你必須申請。試圖淹沒IE6仇恨郵件,我猜。

+0

嗯,所以你說這是應用程序的選擇忽略這些設置?我可以通過WindowStyle設置瞭解更多。但是,CreateNoWindow選項聽起來更像是Windows控制的東西(又名 - 應用程序不知道它已隱藏)。 我會看看註冊連接...我想這個錯誤也存在於IE9中。 在旁註中,notepad.exe確實隱藏。 – Chad 2010-08-09 15:16:20

+0

是的,這是IE的錯誤,而不是運行時的錯誤。不過,就錯誤而言,我懷疑這是相當低的優先級......它不是一個真正的受支持的方案,並且有一種方法可以正確地做你想做的事(見我的答案)。 – 2010-08-09 16:54:08

1

如果您想以正確的方式執行此操作,則應該使用IID_IWebBrowser2將互操作編寫到CoCreateInstance() CLSID_InternetExplorer。您可以獲得IWebBrowser2 at pinvoke.net的互操作性。

這將創建一個不可見的IE實例,然後您可以使用IWebBrowser2::put_Visible(VARIANT_TRUE)使其稍後可見。

+0

這讓我很害怕,你知道這麼多:-)感謝您的信息,它看起來像我所需要的,但它會多一點工作。 – Chad 2010-08-10 02:20:46

+0

我有獨特的經驗。 – 2010-08-11 15:03:27

相關問題