Warten bis Programm beendet
-
Hi, ich rufe ein Programm aus meinem Programm auf und möchte wissen wann es beendet wird.
ShellExecute( NULL, "open", csProgramm, csParameter, NULL, SW_HIDE );Wie kann ich darauf warten bis es beendet ist?
Geht das mit WaitForSingleObject?
Und wenn ja wie? Könnt Ihr mir ein Beispiel geben und erklären?Grüße
Filou
-
Meine Überlegungen: Nimm ShellExecuteEx, danach kannst du den als hProcess zurückgegebenen Prozess-Handle z.B. an WaitForSingleObject weitergeben.
-
Danke für Deine Antwort!
Kannst Du mir ein Beispiel geben? Wie geht das mit dieser Stuktur?
So nicht jedenfalls nicht:typedef struct _SHELLEXECUTEINFO { DWORD cbSize; ULONG fMask; HWND hwnd = *handle; LPCTSTR lpVerb; LPCTSTR lpFile = open; LPCTSTR lpParameters; LPCTSTR lpDirectory = "C:\\Test.exe"; int nShow = SW_HIDE; HINSTANCE hInstApp; LPVOID lpIDList; LPCTSTR lpClass; HKEY hkeyClass; DWORD dwHotKey; union { HANDLE hIcon; HANDLE hMonitor; } DUMMYUNIONNAME; HANDLE hProcess; } SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO; ShellExecuteEx(_SHELLEXECUTEINFO); while (bCheck == TRUE) { dWait = WaitForSingleObject(*handle, 1000); if (dWait == WAIT_ABANDONED) { bCheck = FALSE; } Sleep(2000); }
-
OMG beschäftige dich erstmal mit den Grundlagen.
-
Du mußt diese Struktur nicht nochmal neu definieren, sondern nur verwenden:
SHELLEXECUTEINFO info; //hier alle nötigen Parameter und Zusatzangaben einfügen if(ShellExecuteEx(info)&&info.hProcess!=NULL) { WaitForSingleObject(info.hProcess,...); }
-
dies ware auch eine möglichkeit
//Processinformationen zum zerstöhren der Anwendung PROCESS_INFORMATION pInfo; ZeroMemory(&pInfo,sizeof(pInfo)); CreateProcess(0,"C:\\Deine.exe",0,0,TRUE, NORMAL_PRIORITY_CLASS,0,0,NULL,&pInfo);
-
LowFly du hast vergessen STARTUPINFO anzugeben.