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

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

Mary-Kate Olsen
リリース: 2024-11-02 13:02:29
オリジナル
378 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート