Auf Prozess Ende warten?!
-
Gibt es eine Funktion mit der ich einen Prozess erzeugen kann und danch solang wartet bis der prozess endet.
Genau so wie man das mit createthread + waitforsingleobject() machen kann! Aber eben für ein Process.
-
side-by-side schrieb:
createthread waitforsingleobject()
Wenn man diese beiden Funktionen kennt, impliziert es sich doch schon von selbst, was du Suchst
-
Dreimal darfst du raten mit welchen Funktion es Funktioniert.
CreateProcess + WaitForSingleObject
STARTUPINFO si; PROCESS_INFORMATION pi; DWORD ExitCode; ZeroMemory(&pi, sizeof(pi)); ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); if (CreateProcess(NULL, "abc.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) { WaitForSingleObject(pi.hProcess, INFINITE); GetExitCodeProcess(pi.hProcess, &ExitCode); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); }
-
Du kannst auch ShellExecuteEx verwenden. Wenn du fMask auf SEE_MASK_NOCLOSEPROCESS setzt, sollte der Member hProcess ungleich 0 sein und du kannst anschließend ebenfalls mit WaitForSingelObject auf das Prozessende warten. Das Handle müsstest du dann freigeben.
-
Genau das gleich Problem wie side-by-side hab ich auch, nur unter Visual C++ mit dem Visual C++-Programm von Microsoft.
Kann man das auch in diesen Quellcode einbauen...?process1->StartInfo->FileName = "cmd"; process1->StartInfo->Arguments = arguments + " | clip && exit"; process1->StartInfo->UseShellExecute = false; process1->StartInfo->CreateNoWindow = true; process1->Start(); this->UseWaitCursor = true; process1->Close(); //hier soll er warten, bis der Prozess wirklich komplett ausgeführt ist files = Clipboard::GetText();
Wenn er nicht wartet, hat er das ganze noch nicht in der Zwischenablage, und wenn ich diese dann abrufe, kommt was ganz anderes...
LG, Ialokim
EDIT: Ja, entschuldigung für das falsche Forum, ich dachte, weil es hier drin ja auch schon darum ging... Hat sich aber eh erledigt!
-
Falsches Forum das ist C++/CLI!
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
process1->WaitForExit();