Prozesse auflisten und beenden

Mit folgendem Codestück lassen sich die Prozesse und/oder die laufenden Threads auslesen:

#include <tlhelp32.h>

.........

PROCESSENTRY32 pe;
DWORD Pid=-1;
String procname;
value="notepad.exe";    //Als Beispiel das Programm Notepad

//Einen Schnappschuss des Liste holen -> mit TH32CS_SNAPTHREAD können die Threads geholt werden 
HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if ((int)hSnapshot==-1)
	return false;
pe.dwSize=sizeof(PROCESSENTRY32);
bool retval=Process32First(hSnapshot,&pe);
while(retval)
	{
	procname=pe.szExeFile; // in der PROCESSENTRY32-Struktur stehen dann die Infos....
	procname=procname.LowerCase();
	if(procname==value||procname.Pos(value)>0)
		{
		Pid=pe.th32ProcessID; //ProzessID holen
		break;
		}
	pe.dwSize=sizeof(PROCESSENTRY32);
	retval=Process32Next(hSnapshot,&pe);
	}
CloseHandle(hSnapshot);


if(Pid==-1)
	//Fehler Prozess nicht gefunden

//Prozess öffnen
HANDLE hProc=OpenProcess(PROCESS_TERMINATE|SYNCHRONIZE,false,Pid);
if(hProc==NULL)
	//Fehler

Prozess abschiessen
TerminateProcess(hProc,0);


//Warte 5 Sek. ob es funktioniert hat
DWORD ws=WaitForSingleObject(hProc,5000);


if(ws==WAIT_TIMEOUT)
	//Prozess konnte innerhalb von 5 Sek. nicht beendet werden

//ok




Zur Übersicht