TerminateProcess()

Hi,
ich wollte mal fragen wie man einzelne Prozesse beendet.
Mit der Funktion TerminateProcess() kann ich ja nur so weit ich weiss eine laufende Anwendung beenden in dem ich das Handle auf die Anwendung mit angebe.
also so

Code:
processhandle = OpenProcess ( PROCESS_ALL_ACCESS , false , processid );
  TerminateProcess ( processhandle , 0 );

Aber wie kann ich z.B die explorer.exe ( siehe Task Manager ) beenden bzw. wie kriege ich ein Handle auf diesen Prozess ?

mit FindWindow() wird das ja wohl nicht klappen.
 
aber um GetWindowThreadProcessId zu benutzen brauche ich ja das handle auf die anwendung also suche ich eine funktion die wie FindWindow() arbeitet nur mit dem unterschied das diese auch prozesse bzw. dienste "findet"
 
CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS
und dann mit
Process32First/Next
die Liste durchgehen, man bekommt immer ein PROCESSENTRY32 zurückgeliefert, also auch nützliche Angaben wie
Code:
 DWORD th32ProcessID; 
 ...
  TCHAR szExeFile[MAX_PATH];
d.h nach gewünschten Namen suchen und bei einer übereinstimmung die ProcessID merken.
 
Code:
DWORD GetProcessIdByName(char* cProcessName){

   HANDLE hProcesslist;
   PROCESSENTRY32 peProcess;


   hProcesslist = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

   while(Process32Next(hProcesslist, &peProcess)){

      if(!strnicmp(cProcessName, peProcess.szExeFile, strlen(cProcessName)) && strlen(cProcessName) == strlen(peProcess.szExeFile)){

         return peProcess.th32ProcessID;

      }

   }

   return 0;

}
 
Zurück
Oben