Ver Mensaje Individual
  #2  
Antiguo 14-12-2013
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
La API TerminateProcess "Mata" un proceso determinado. El primer parámetro no es el nombre del archivo ejecutable sino el Handle del proceso en cuestión que previamente debes conseguir con OpenProcess.

Mira este ejemplo completamente funcional para conseguir matar un proceso conociendo el nombre de su ejecutable:
Código:
// Termina los procesos conociendo el nombre del exe
bool TerminateProcess(char* FileName)
{
   DWORD  Result  = 0;
   HANDLE Process = 0;
   PROCESSENTRY32 proc = { sizeof(proc) };
   HANDLE hSysSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   if(hSysSnapshot != INVALID_HANDLE_VALUE && Process32First(hSysSnapshot, &proc)){
     do{
        if(!stricmp(proc.szExeFile, FileName)){
           Result = proc.th32ProcessID;
           if(Result)
              Process = OpenProcess(PROCESS_ALL_ACCESS, false, Result);
              if(Process){
                 Result = TerminateProcess(Process, 0);
                 CloseHandle(Process);
              }   
        }
     }while(Process32Next(hSysSnapshot, &proc));
   }
   CloseHandle(hSysSnapshot);
   return (bool)Result;
}

Saludos.
Responder Con Cita