Heraus ob bestimmter Prozess läuft, diesen dann beenden...?
-
Hallöle,
kann mir jemand sagen, wie ich in C++ herausfinde, ob zum Beispiel der Prozess programm.exe aktiv ist (heißt, im Task-Manager zum Beispiel sichtbar)???Ich will dann den entsprechenden Task beenden, bis jetzt habe ich dies hier:
#include<iostream> #include<windows.h> using namespace std; int main() { bool exe_active = false; for(;;) { //Hier muss die Überprüfung rein, ob programm.exe läuft //diese soll den Wert wiedergeben (return), jedoch in die Variable //exe_active, wie geht das? if(exe_active==true) { system("kill programm.exe"); Sleep(10000); } Sleep(10000); } }
ACHTUNG:
ja, ich will die windows.h datei benutzen, das programm würde nur auf Win XP rechnern laufen...
ja, ich habe die kill.exe aus dem NT resource kit schon in den system32 ordner verschoben!ich hoffe ihr könnt mir helfen,
|<
-
Das hat nix mit C++ zu tun.
-
-
Hey, habe es jetzt gelassen, das Proramm schläft 10 Sekunden und frisst daher nur sehr wenig Ressourcen, thx trotzdem!
-
Dazu gibt es zwei Möglichkeiten, die im Wesentlichen gleich funktionieren, aber unterschiedliche Win32 API Aufrufe benutzen.
Möglichkeit 1:
- Mit EnumProcesses eine Liste von Prozess IDs aller laufenden Prozesse bestimmen
- Für jede Prozess ID folgende Schritte durchführen:
- OpenProcess, um Prozessinformationen abzufragen
- GetModuleBaseName, um den Dateinamen zu bestimmen
- Dateinamen mit dem gesuchten Prozessnamen vergleichen, bei Erfolg Prozess ID merken
- CloseHandle für alle erzeugten Handles aufrufen
Möglichkeit 2:
- Mit CreateToolhelp32Snapshot eine Auflistung aller laufenden Prozesse anfordern
- mit Process32First/Process32Next über die Auflistung laufen und alle Einträge mit dem gesuchten Prozessnamen vergleichen. Bei Erfolg ebenfalls Prozess ID merken.
- CloseHandle für alle erzeugten Handles aufrufen
Wenn du einmal die Prozess ID des gesuchten Prozesses hast kannst du zyklisch prüfen, ob er existiert (mit OpenProcess z.B., oder mit EnumProcesses und dann die Prozess ID suchen). Den Prozess kannst du dann per TerminateProcess beenden.
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.