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!