wie stelle ich fest, ob ein Prozess laeuft.
-
Hallo,
kann mir jemand sagen, wie ich Windows versionsübergreifend feststellen kann, ob ein Prozess gerade läuft?
Für NT habe ich EnumProcesses gefunden, die gibt's aber nicht unter Win95.
Danke,
Sascha
-
Entschuldige die freche Frage: Wenn interessiert Windows 95?
-
#include <windows.h> #include <tlhelp32.h> #include <cstdio> bool isProcessRunning( char *exe_name ) { HANDLE snapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( snapshot == INVALID_HANDLE_VALUE ) return false; PROCESSENTRY32 process; process.dwSize = sizeof( PROCESSENTRY32 ); if( !Process32First( snapshot, &process ) ) return false; process.dwSize = sizeof( PROCESSENTRY32 ); while( Process32Next( snapshot, &process ) ) { if( stricmp( process.szExeFile, exe_name ) == 0 ) return true; process.dwSize = sizeof( PROCESSENTRY32 ); } return false; }tut's auch unter Win95.
HIH
Greetz, Swordfish
-
Bei dem Vergleich des EXE-Namen muss man nur aufpassen, falls der Namen mehr als 8 Zeichen hat und via COM gestartet wurden. Dann taucht er nämlich als kurzer Dateinamen auf... Auch mehr als 15 Zeichen gibt AFAIK CreateToolhelp32Snapshot nicht zurück.
-
Jochen Kalmbach schrieb:
Auch mehr als 15 Zeichen gibt AFAIK CreateToolhelp32Snapshot nicht zurück.
doch.
Bei durch COM gestartete Prozesse hast Du leider recht.
Greetz, Swordfish
-
Danke sehr für die Hilfe,
Sascha
-
Funktioniert die Methode 'CreateToolhelp32Snapshot' auch unter WindowsNT4.0? Ich habe hier so meine Probleme!
Danke.