jueves, 27 de octubre de 2016

Truco C# - Eliminar / Matar procesos Windows por nombre o id

En este post os voy a enseñar una manera sencilla de eliminar procesos concretos por nombre o id mediante programación.

Para poder hacer uso de este truco vamos a necesitar añadir System.Diagnostics a nuestro programa ya que haremos uso de la clase Process. Una vez hecho esto vamos a definir 3 métodos, uno para matar procesos por su id de proceso y dos que irán por nombre de proceso; el primero eliminará la primera ocurrencia y el segundo eliminará todos los procesos con el mismo nombre (el proceso "Chrome" puede ser un buen ejemplo para probarlo).

Matar tarea por Id.

 
        private void KillTaskById(int taskid)
        {
            try
            {
                Process proceso = Process.GetProcessById(taskid);
                proceso.Kill();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Matar tarea por Nombre. Primera ocurrencia.

        private void KillTaskByName(string taskName)
        {
            try
            {
                Process[] procesos = Process.GetProcessesByName(taskName);
                procesos[0].Kill();
            } 
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Matar tarea por Nombre. Todas las ocurrencias.

 
        private void KillAllTasksByName(string taskName)
        {
            try
            {
                foreach (Process proceso in Process.GetProcessesByName(taskName))
                {
                    proceso.Kill();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

Probadlo y dejar en los comentarios que os ha parecido.

Si tienes cualquier duda o comentario recuerda que puedes exponerlo aquí o bien mediante nuestro twitter facebook.
Compartir:

3 comentarios:

  1. esto vendria siendo como el "taskkill /im /f proceso.exe " en bat?
    se tendria q repetir el try catch para cada proceso que quiera detener?

    ResponderEliminar
  2. Correcto, sería similar a ese comando. Con respecto al try catch eso ya es opcional, yo solo expongo el metodo y lo encapsulo en una función.

    Un saludo.

    ResponderEliminar
  3. Amm lo he probado en un código el cual envió parámetros de c# al WORD este codigo me genera una apertura de proceso al finalizar ese proceso deceo cerrarlo ya que despues convierto ese word en pdf pero me dice que solo lo puedo abrir en modo lectura dado que aun tiene el proceso abierto y con esos codigfos no he logrado cerrarlo

    ResponderEliminar

Stream

invalidexpression's Streambadge
Con la tecnología de Blogger.

BoosterBlog

BoosterBlog
BoosterBlog

Timeline Twitter

Seguidores

Seguidores