Estoy usando watin para la automatización del navegador, y muchas ventanas del navegador quedan abiertas, y al final estoy usando esto para intentar cerrarlas todas:

        Process[] ieProcesses = Process.GetProcessesByName("iexplore");

            foreach (Process ie in ieProcesses)
            {
                ie.CloseMainWindow();
                ie.Close();
                ie.Dispose();
            }

Por alguna razón, close, closemainwindow y dispose, no todos cerrarán mis procesos iexplore. Si paso por esta parte con el depurador, ieProcesses tendrá todos los procesos en él, normalmente ~ 10, y pasará por foreach para cada uno, pero mirando en el administrador de tareas, ninguno de ellos se cerrará.

¿Esto puede tener que ver con que se inician en ventanas ocultas, tal vez? pero no estoy seguro de cuál es la forma correcta de cerrarlos. ¿Alguna idea?

c#
1
Kyle 7 jun. 2012 a las 02:40
¿No cierran en absoluto o se cierran y luego se 'recuperan'?
 – 
Brandon Moore
7 jun. 2012 a las 02:45
¿Qué versión de IE estás intentando cerrar?
 – 
seekerOfKnowledge
7 jun. 2012 a las 02:47

1 respuesta

La mejor respuesta

Prueba el método ie.Kill():

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.kill.aspx

4
eyossi 7 jun. 2012 a las 02:44
1
Iba a decir esto, pero me adelantaste. Estuve ocupado probando su código porque parece que funcionaría, y puedo decir que IE 9 cerró con su código.
 – 
seekerOfKnowledge
7 jun. 2012 a las 02:46
3
Estoy confundido. El interrogador menciona Process.Kill() en el título de su pregunta, pero luego olvida que es la respuesta a su pregunta. Menos mal que estabas aquí para recordárselo :)
 – 
Frédéric Hamidi
7 jun. 2012 a las 02:47
Sí, me sorprendió que el .Kill no estuviera allí también
 – 
eyossi
7 jun. 2012 a las 02:50
Bueno, esto es vergonzoso. Pensé que .Kill fue el primero que probé, antes de recurrir a probar los otros tres. Decidí que sería mejor comprobarlo dos veces ... Opps. Gracias por la ayuda =)
 – 
Kyle
7 jun. 2012 a las 03:01