Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-11-02 13:02:29
asal
357 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan