Heim > Backend-Entwicklung > C++ > Wie starte und verwalte ich ausführbare Windows-Dateien mit ::CreateProcess in C?

Wie starte und verwalte ich ausführbare Windows-Dateien mit ::CreateProcess in C?

Mary-Kate Olsen
Freigeben: 2024-11-02 13:02:29
Original
358 Leute haben es durchsucht

How to Launch and Manage Windows Executables with ::CreateProcess in C  ?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage