Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Melancarkan dan Mengurus Windows Executable dengan ::CreateProcess dalam C ?

Bagaimana untuk Melancarkan dan Mengurus Windows Executable dengan ::CreateProcess dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 13:02:29276semak imbas

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

Memanggil ::CreateProcess untuk Melancarkan dan Mengurus Windows Executable dalam C

Artikel ini akan menunjukkan cara menggunakan fungsi ::CreateProcess dalam C untuk melancarkan Windows executable, tunggu sehingga selesai dan mengendalikan penamatannya dengan betul.

Melancarkan Executable

Fungsi ::CreateProcess menerima beberapa parameter, termasuk laluan boleh laksana dan hujah baris arahan. Untuk melancarkan EXE, nyatakan laluan kepada boleh laku dalam parameter laluan:

<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>

Menunggu Selesai

Untuk menunggu boleh laku selesai, panggil Fungsi WaitForSingleObject dengan processInfo.hProcess sebagai pemegang untuk menunggu:

<code class="cpp">WaitForSingleObject(processInfo.hProcess, INFINITE);</code>

Ini akan menyekat urutan semasa sehingga proses keluar.

Mengendalikan Penamatan Proses

Selepas boleh laku selesai, tutup proses dan pemegang benang untuk melepaskan sumber sistem dengan betul:

<code class="cpp">CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);</code>

Kod Contoh

Menggabungkan semuanya, kod berikut menunjukkan cara untuk melancarkan EXE, tunggu sehingga selesai dan mengendalikan penamatan proses:

<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>

Kod ini akan melancarkan EXE yang ditentukan, tunggu sehingga ia selesai, dan kemudian tutup semua pemegang dengan betul, memastikan pembersihan yang betul dan pengagihan sumber.

Atas ialah kandungan terperinci Bagaimana untuk Melancarkan dan Mengurus Windows Executable dengan ::CreateProcess dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn