Läuft Prozess bereits?
-
Ich möchte prüfen ob ein Programm bereits läuft.
Ist dies nicht der Fall, soll es gestartet werden.Das Problem an der Sache ist, dass immer false zurückgegeben wird.
Die test.exe läuft jedoch bereits.wchar_t lpExePath[MAX_PATH]="c:\\test.exe"; bool gefunden = false; HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 Pe32; Pe32.dwSize = sizeof(PROCESSENTRY32); Process32First(hSnapShot, &Pe32); do { if(wcscmp(Pe32.szExeFile, lpExePath ) == 0) { MessageBox(0,_T("prozess gefunden"),0,0); gefunden=true; } else { gefunden = false; } }while (Process32Next(hSnapShot, &Pe32)); CloseHandle (hSnapShot); if(gefunden) { //... }else if(!gefunden) { //hier lande ich immer....auch wenn prog schon läuft }
-
Hierfür verwendet man normalerweise ein Mutex...
http://www.google.de/search?q=single+instance+site%3Acodeproject.com
-
Hier eine komplette Anleitung mit Diskussion über die verschiedenen Methoden:
http://www.flounder.com/nomultiples.htm