ホームページ  >  記事  >  バックエンド開発  >  C の ::CreateProcess を使用して Windows 実行可能ファイルを起動および管理する方法

C の ::CreateProcess を使用して Windows 実行可能ファイルを起動および管理する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 13:02:29276ブラウズ

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

C で Windows 実行可能ファイルを起動および管理するための ::CreateProcess の呼び出し

この記事では、C で ::CreateProcess 関数を利用する方法を説明します。 Windows 実行可能ファイルを起動し、完了を待ち、終了を正しく処理します。

実行可能ファイルの起動

::CreateProcess 関数は、実行可能ファイルのパスを含むいくつかのパラメータを受け入れます。そしてコマンドライン引数。 EXE を起動するには、パス パラメーターで実行可能ファイルへのパスを指定します。

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

完了を待機中

実行可能ファイルが終了するのを待つには、 processInfo.hProcess を待機ハンドルとして使用する WaitForSingleObject 関数:

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

これにより、プロセスが終了するまで現在のスレッドがブロックされます。

プロセス終了の処理

実行可能ファイルが終了したら、プロセスとスレッドのハンドルを閉じて、システム リソースを適切に解放します。

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

サンプル コード

すべてをまとめると、次のコードは、EXE を起動し、その完了を待ち、プロセス終了を処理する方法を示しています。

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

このコードは、指定された EXE を起動し、完了するのを待ってから、すべてのハンドルを適切に閉じます。適切なクリーンアップとリソースの割り当て解除を確保します。

以上がC の ::CreateProcess を使用して Windows 実行可能ファイルを起動および管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。