Prüfen ob Programm noch aktiv ist
-
Hallo
Wie kann ich mit einen Programm prüfen ob ein anderes Programm noch im Taskmanager aktiv ist. Danke im vorraus Praetorianer.
-
Hallo
wenn du den Namen (oder einen Teil des Namens) der Anwendung kennst, kannst du die Prozeßliste durchgehen. Dazu brauchts du die WinAPI-Funktion EnumWindows.
Dafpr habe ich mir folgendes zusammengebaut :// Hilfsdaten für die Suche nach einem Prozeß struct TProcessHandle { HANDLE ProcessHandle; AnsiString TitlePart; }; // Callback-Funktion zum Überprüfen eines Prozeßes BOOL CALLBACK FindWinword(HWND hwnd, LPARAM lParam) { char title[110]; // Titel des Prozeßes AnsiString Buffer; // Zwischenspeicher struct TProcessHandle *ProcessHandle = (TProcessHandle *) lParam; // lParam als Hilfsstrucktur void *hg; // Globaler Zeiger unsigned long *ProcessID; // Die PID des Prozeßes GetWindowText(hwnd,title,110); // Titel des Fensters bestimmen Buffer = title; // Titel in AnsiString konvertieren // Wenn gesuchter Teil in aktuellen Titel vorhanden, Suche erfolgreich if (Buffer.AnsiPos(ProcessHandle->TitlePart) > 0) { hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long)); // Zeiger erschaffen ProcessID = (unsigned long *)GlobalLock(hg); // Speicher für ProzeßID zuweisen GetWindowThreadProcessId(hwnd, ProcessID); // ProzeßID ermitteln ProcessHandle->ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, true, *ProcessID); // Prozeßhandle für ProzeßID zurückgeben GlobalUnlock(hg); // Speicher freigeben GlobalFree(hg); // Speicher freigeben return(false); // Suche nicht fortsetzen } return(true); // Suche fortsetzen }Wenn du das in dein projekt einbaust, kannst du dann mit diesem Aufruf ein Prozeß finden :
TProcessHandle ProcessHandle; // Hilfsstruktur ProcessHandle.TitlePart = <Teil des gesuchten Prozeß-Titels>; // Suchkriterium // Suche ausführen und auswerten if (EnumWindows((WNDENUMPROC)FindWinword, (LPARAM) &ProcessHandle) == false) { // etwas tun, wenn Prozeß gefunden wurde } else { // etwas zun, wenn Prozeß nicht gefunden wurde }bis bald
akari
-
Danke akari für die schnelle Antwort