Prüfen ob Prozess gestartet wurde?
-
Hallo ich möchte eine Funktion die ale Rückgabewert den Startwert vom Prozess zurückgibt, also ob der Prozess gestartet wurde.
Normalerweise habe ich immer alle Prozesse mit system() gestartet, lässt sich hier ein rügabewert ermitteln?
-
Verwende CreateProcess, dann bekommst Du alles zurück was Du willst...
-
Hab folgendes erstellt, doch es klappt noch nicht

int execCommand(string str) { cout << "[" << str << "]" << endl; STARTUPINFO siStartupInfo; PROCESS_INFORMATION piProcessInfo; memset(&siStartupInfo, 0, sizeof(siStartupInfo)); memset(&piProcessInfo, 0, sizeof(piProcessInfo)); siStartupInfo.cb = sizeof(siStartupInfo); CreateProcess(str.c_str(), NULL, 0, 0, false, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo); return STATUS; //ob Prozess gestartet wurde }Die Funktion execCommand bekommt ein string str mit dem ganzen Pfad in "" eingeschloßen und mit Parameter
Beispiel str = "C:\test\app.exe" -s 10
Nun kenne ich mich nicht mit den ganzen Funktionsparameter von CreateProcess aus könnt ihr mir bitte helfen Prozesse zu starten und als return Wert den wert ob der Prozess gestartet wurde
Alle PRozesse werden in der Konsole geöffnet!!
Bitte um Hilfe!
-
GetExitCodeProcess
-
int execCommand(string str) { cout << "[" << str << "]" << endl; STARTUPINFO siStartupInfo; PROCESS_INFORMATION piProcessInfo; memset(&siStartupInfo, 0, sizeof(siStartupInfo)); memset(&piProcessInfo, 0, sizeof(piProcessInfo)); siStartupInfo.cb = sizeof(siStartupInfo); int returnedcode = CreateProcess(str.c_str(), NULL, 0, 0, false, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo); if(returnedcode) return true; else return false; }Ist doch logisch oder?
-
Ich habe bemerkt, dass wenn ich CreateProcess() verwende das die Shell Befehle langsamer aufbauen, als wenn ich mit system() arbeite, deshalb habe ich versucht das gleiche mit system() zum machen:
int stat = system(str.c_str()); cout << "STAT:" << stat << endl; cout << endl; if(stat) return true; else return false;Wenn meine Konsolenprogramme starte wird bei mir der Wert 0 angezeigt. Ich hab versucht eine Beschreibung von system() in MSDN zu suchen, hab aber nix gefunden

-
Ich lasse dich von mir klauen,
aber auch nur weil du es bist
//Auszug aus Dragonslayer 1.0 Beta by CaptainBigSmoke bool CheckForProcessAlive(LPSTR str) { HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32* processInfo=new PROCESSENTRY32; processInfo->dwSize=sizeof(PROCESSENTRY32); DWORD processID = 0; BOOL bFound = FALSE; while(Process32Next(hSnapShot,processInfo)!=FALSE) { processID = processInfo->th32ProcessID; if(lstrcmp(processInfo->szExeFile,str) == 0) { bFound = TRUE; break; } } CloseHandle(hSnapShot); if(bFound) { return true; } return false; }Usage:
bool isWordStarted = CheckForProcessAlive(Word.exe); if(isWordStarted) cout << "Microsoft Word wurde in ihrer Prozessliste gefunden" << endl;Ahoi
-
Da fehlen aber noch Anführungstriche ^^ ...