2011-05-18 27 views
14

Necesito cerrar otro proceso (Windows Media Encoder) desde una aplicación C#, y hasta ahora puedo hacerlo con:Cómo cerrar otro proceso de C#

Process.GetProcessesByName("wmenc.exe")[0].CloseMainWindow(); 

Pero si la aplicación Media Encoder es Streaming o Grabación, muestra un cuadro de diálogo al salir:

"¿Está seguro de que desea detener la codificación?"

¿Hay alguna manera de responder o hacer clic en el botón Sí del Código?

[editar] Muchos usuarios están respondiendo con Process.kill(), pero eso no es una opción, porque Process.Kill(); terminará Windows Media Encoder inmediatamente, y Windows Media Encoder no finalizará el archivo que está escrito, lo que las fuerzas para reindexar el archivo de video. Así que no, no puedo usar Process.Kill();

+0

No se moleste en cerrar ninguna ventana. Mejor busca formas de forzar el proceso para que sea asesinado. ¿Qué pasa si abre otra ventana? El proceso no se cerrará si alguna de las ventanas asociadas está abierta –

+0

Creo que los procesos recuperados por GetProcessesByName deben eliminarse, por cierto. http://stackoverflow.com/questions/16957320/what-does-process-dispose-actually-do – BlueMonkMN

Respuesta

4

Aquí hay una publicación de SO que pregunta y responde how to control other applications de .NET. La respuesta aceptada utiliza solo cuatro líneas de código para obtener una ventana y enviar una pulsación de tecla a un botón en particular en esa ventana. Creo que esa puede ser la mejor opción para cerrar la aplicación.

+0

http://white.codeplex.com/releases/view/29694 que podría ser una solución simplemente no puedo probarlo ahora, dejaré este tema abierto hasta ayer para ver más opiniones de las que elegiré la respuesta correcta, muchas gracias Paul Sasik. – Burimi

0

This artículo paso a paso se muestra cómo cerrar una aplicación desde dentro de una aplicación. También describe cómo cerrar una instancia específica de otra aplicación, como el Bloc de notas, si se está ejecutando más de una instancia de la aplicación.

+0

Esto está usando solo qué OP ya tiene: 'CloseMainWindow'. No ayuda en absoluto. –

+0

Sí, ayuda. Busque proce.WaitForExit() con tiempo de espera opcional: primero lo intenta muy bien. Si no funciona, entonces ka-boom! –

Cuestiones relacionadas