La Web del Programador: Comunidad de Programadores
 
    Pregunta:  24625 - DETENER UN PROCESO EXE (URGENTE)
Autor:  Max C. Salas
Hola, necesito detener 2 procesos exe desde un sistema en vc++ 6.0 que estan ejecutandose en windows nt, es urgente pues si no logro descargarlos cuando el sistema sale me genera un conflicto horrible.

Saludos y Gracias.

  Respuesta:  Jesús Antón Martín
¿Conoces la estructura de los EXE?

Si la respuesta es afirmativa ¿Manejan mensajes de Windows? Si no fuera así ¿Está en tu mano que lo hagan?

Si al final ha quedado un "Sí", puede que estés de suerte. El API de Win32 tiene una función llamada BroadCastSystemMessage, que admite mandar mensajes a casi cualquier cosa que se esté ejecutando en el sistema, incluyendo drivers y dispositivos virtuales. Puedes utilizarla para mandar WM_QUIT a esos programas rebeldes (aunque si no escuchan el mensaje de salida de Windows, no creo que te hagan más caso así)

En cualquier caso, si tú inicias los procesos en tu aplicación, es muy probable que uses CreateProcess, y si no es así, es fácil que puedas hacerlo.

Si utilizas el último parámetro de esta función "lpProcessInformation", puedes contar con los handles del proceso y el thread que se han iniciado, y que permiten realizar algunas operaciones sobre ellos, incluida TerminateProcess, que recibe el handle del proceso y un valor de retorno.

Un saludo.