2015-09-20 18 views
2

我已經使用C#編寫了一個控制檯應用程序,並且它在以下命令中打開了一個瀏覽器。Process.Kill不適用於與默認Web瀏覽器關聯的進程

Process webprocess = Process.Start("http://www.hashgurus.com"); 

但是工作完成後我想關閉瀏覽器。我試圖殺死這個過程,但它不工作。

webprocess.Kill(); 
+0

您是否試過[Kill](https://msdn.microsoft.com/en-us/library/system.diagnostics.process.kill .aspx) –

+2

非常大的進程(如瀏覽器)通常用作單實例應用程序。換句話說,如果瀏覽器已經在運行並且你運行這段代碼,那麼瀏覽器只是要求第一個實例顯示網頁並終止。一種方法是在另一個選項卡中看到頁面打開。 Kill()不能工作,進程已經終止。 –

回答

0
Process webBrowser = Process.Start(url); 
webBrowser.WaitForExit(); 
webBrowser.Kill(); 
webBrowser.WaitForExit(); 

注意,我不知道如何用多進程瀏覽器的工作原理是最現代的網絡瀏覽器是。如果您想確定,請使用遞歸kill-all-child-processes方法來確保樹中的所有子進程都被終止。不過,我相信在多進程瀏覽器中的子進程檢測是否他們的父母被殺,然後在這種情況下提交儀式seppuku。

+0

這不起作用。 Process webprocess = Process.Start(url);當我調試時,我得到Webprocess = null – Venkat

0

您可以嘗試獲取所有進程的列表並遍歷它們並殺死所需的進程。您將需要使用System.Diagnostics

繼承人它是如何工作的一些步驟:過程

  1. 並使陣列
  2. 設置數組中的項目的所有正在運行的進程(我想與診斷有類似GetProcesses()方法)
  3. 爲陣
  4. 檢查窗口的標題中的每個處理(我認爲這是.MainWindowTitle
  5. 如果你想殺死瀏覽器殺掉該進程(LIK e檢查進程名稱是否爲「chrome」,如果是,則kill
相關問題