2013-01-23 14 views
7

Come posso chiudere in sicurezza google chrome tramite C#? Posso eliminare il processo di Chrome, ma in questo caso Google Chrome segnalerà appcrash alla prossima esecuzione.Come chiudere in sicurezza Google Chrome in modo programmatico

+0

ottenere un handle alle finestre di Chrome e inviare 'WM_CLOSE' a ciascuno di loro: http://stackoverflow.com/questions/1129204/how -to-use-wm-close-in-c – Jon

+0

Dai un'occhiata a questo http://stackoverflow.com/questions/2055753/how-to-gracefully-terminate-a-process –

+0

Sono solo curioso ... di Google Chrome o qualsiasi altro browser mi avviserebbero che un'applicazione sta tentando di chiudere il browser? Pensando come utente penso che questo sia un processo molto fastidioso. Il più delle volte ho aperto così tante schede e non voglio chiudere tutto. Poiché ogni scheda ha il proprio processo, non sarebbe meglio chiudere una scheda specifica anziché l'intero browser? –

risposta

2

Si potrebbe provare a determinare l'handle della finestra (s) utilizzando la classe Process e inviare un messaggio WM_CLOSE alla finestra.

+0

Non funziona. Riuscirai a superare il codice – Stephane

9

È possibile utilizzare il poco conosciuto UI Automation API, in questo modo:

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

Sembra fantastico, ma ho una soluzione compatibile con .net 2.0 – user2003858

+3

Avresti dovuto dire * che * nella domanda. –

+1

Sfortunatamente se si aprono più finestre cromate, questo non chiude il primo. – Michael

Problemi correlati