Aufruf von ::CreateProcess zum Starten und Verwalten von ausführbaren Windows-Dateien in C
In diesem Artikel wird gezeigt, wie Sie die Funktion ::CreateProcess in C verwenden um ausführbare Windows-Dateien zu starten, auf deren Abschluss zu warten und ihre Beendigung korrekt zu behandeln.
Starten einer ausführbaren Datei
Die Funktion ::CreateProcess akzeptiert mehrere Parameter, einschließlich des Pfads der ausführbaren Datei und Befehlszeilenargumente. Um eine EXE-Datei zu starten, geben Sie den Pfad zur ausführbaren Datei im Pfadparameter an:
<code class="cpp">STARTUPINFO info = { sizeof(info) }; PROCESS_INFORMATION processInfo; if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) { // Executable successfully launched } else { // Handle launch failure }</code>
Warten auf Abschluss
Um auf den Abschluss der ausführbaren Datei zu warten, rufen Sie die auf WaitForSingleObject-Funktion mit processInfo.hProcess als Handle, auf das gewartet werden soll:
<code class="cpp">WaitForSingleObject(processInfo.hProcess, INFINITE);</code>
Dies blockiert den aktuellen Thread, bis der Prozess beendet wird.
Behandlung der Prozessbeendigung
Nachdem die ausführbare Datei fertig ist, schließen Sie die Prozess- und Thread-Handles, um Systemressourcen ordnungsgemäß freizugeben:
<code class="cpp">CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread);</code>
Beispielcode
Alles zusammenfügen, Der folgende Code zeigt, wie man eine EXE-Datei startet, auf deren Abschluss wartet und die Prozessbeendigung verarbeitet:
<code class="cpp">STARTUPINFO info = { sizeof(info) }; PROCESS_INFORMATION processInfo; if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) { WaitForSingleObject(processInfo.hProcess, INFINITE); CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread); }</code>
Dieser Code startet die angegebene EXE-Datei, wartet auf deren Abschluss und schließt dann alle Handles ordnungsgemäß. Gewährleistung einer ordnungsgemäßen Bereinigung und Freigabe von Ressourcen.
Das obige ist der detaillierte Inhalt vonWie starte und verwalte ich ausführbare Windows-Dateien mit ::CreateProcess in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!