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


  • Mod

    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.


Anmelden zum Antworten