ホームページ  >  記事  >  バックエンド開発  >  C を使用して 1 つの .exe ファイルを別の .exe から起動する方法 : CreateProcess() 以降のガイド

C を使用して 1 つの .exe ファイルを別の .exe から起動する方法 : CreateProcess() 以降のガイド

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 23:37:30787ブラウズ

How to Launch One .exe File from Another .exe Using C  : A Guide to CreateProcess() and Beyond

C を使用して別の .exe から .exe ファイルを起動する方法

多くのプログラマーは、内部から .exe ファイルを起動するという課題に直面しています。 C アプリケーション内の別の .exe ファイル。これは、ヘルパー アプリケーションを開いたり、外部プロセスを開始したりするなど、さまざまなタスクに役立つ機能です。

問題

ファイルを開こうとするときによくある間違い.exe ファイルは system() 関数を使用しています。この方法は簡単そうに見えますが、リソース消費量の多さ、潜在的なセキュリティ リスク、ウイルス対策プログラムとの互換性の問題など、いくつかの欠点があります。

解決策: CreateProcess()

より信頼性が高く効率的なアプローチは、CreateProcess() 関数を使用することです。この関数を使用すると、新しいプロセスを作成し、指定された .exe ファイルを実行できます。

サンプル コード

ここでは、CreateProcess() を使用してプロセスを開く方法の例を示します。 .exe ファイル:

<code class="cpp">#include <windows.h>

void startup(const char* lpApplicationName)
{
    // Structures for process and startup information
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi = { 0 };

    // Create the process
    BOOL success = CreateProcess(
        lpApplicationName,
        NULL,   // Command line arguments
        NULL,   // Process handle not inheritable
        NULL,   // Thread handle not inheritable
        FALSE,  // Set handle inheritance to FALSE
        0,      // No creation flags
        NULL,   // Use parent's environment block
        NULL,   // Use parent's starting directory 
        &si,
        &pi
    );

    // If process creation failed, handle the error
    if (!success)
    {
        DWORD error = GetLastError();
        // Handle the error here
    }

    // Close process and thread handles
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}</code>

エラーの処理

CreateProcess() 関数は、成功した場合は TRUE を返し、そうでない場合は FALSE を返します。失敗した場合は、GetLastError() 関数を使用してエラー コードを取得できます。

トラブルシューティング

このメソッドの使用中にエラーが発生した場合は、次のことを確認してください。

  • 指定された lpApplicationName パスは正しいです。
  • .exe ファイルを実行するための十分な権限があります。
  • 指定された .exe ファイルは存在し、破損していません。

以上がC を使用して 1 つの .exe ファイルを別の .exe から起動する方法 : CreateProcess() 以降のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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