2013-01-23 34 views
7

如何安全關閉通過C#的Chrome瀏覽器?我可以殺死Chrome進程,但在這種情況下,Google Chrome會在下次運行時報告appcrash。如何以編程方式安全關閉Google Chrome

+0

得到一個處理Chrome的窗口和發送'WM_CLOSE'他們每個人:http://stackoverflow.com/questions/1129204/how - 使用-WM-關閉 - 在C – Jon

+0

看看這個http://stackoverflow.com/questions/2055753/how-to-gracefully-terminate-a-process –

+0

我只是好奇...通過默認谷歌瀏覽器或任何其他瀏覽器會提醒我一個應用程序試圖關閉瀏覽器?作爲用戶思考我認爲這是一個非常煩人的過程。大多數時候我有很多標籤打開,我不想關閉所有東西。由於每個選項卡都有自己的過程,因此關閉特定的選項卡而不是整個瀏覽器會更好嗎? –

回答

2

您可以嘗試使用Process類來確定窗口句柄併發送WM_CLOSE消息到窗口。

+0

不工作。你可以通過代碼 – Stephane

9

您可以使用鮮爲人知UI Automation API,像這樣:

static void CloseAllChromeBrowsers() 
{ 
    foreach (Process process in Process.GetProcessesByName("chrome")) 
    { 
     if (process.MainWindowHandle == IntPtr.Zero) // some have no UI 
      continue; 

     AutomationElement element = AutomationElement.FromHandle(process.MainWindowHandle); 
     if (element != null) 
     { 
      ((WindowPattern)element.GetCurrentPattern(WindowPattern.Pattern)).Close(); 
     } 
    } 
} 
+0

看起來不錯,但我與.net 2.0兼容的解決方案 – user2003858

+3

你應該已經在問題中說明了*。 –

+1

不幸的是,如果你有多個鉻窗口打開,這將不會關閉第一個。 – Michael