1

2 つの .exe プログラムがあります。1 つはゲーム ランチャーで、もう 1 つはメインの実行可能ファイルです。誰かがゲームランチャーを開こうとした場合、メインの実行可能ファイルをゲームランチャーで実行するにはどうすればよいでしょうか。それは.dprファイルといくつかのWindows APIに関係するものであり、正直に言うと、何を/どこから始めればよいかわかりません。

私がこのようにしたい理由は、ゲームランチャーを使用してゲームを更新し、ゲームを完全に開始すると、人々は常に最新の up2date ファイルを使用するためです。

したがって、必要な機能は次のとおりです。メイン実行可能ファイルまたはランチャー実行可能ファイルをクリックすると、両方ともランチャー実行可能ファイルが開き、更新/ダウンロードが完了すると、ユーザーが[スタート]ボタンをクリックすると、ランチャーがメイン実行可能ファイルを開始します。

/ありがとう

4

1 に答える 1

2

メインの実行可能ファイルのスタートアップ コードで、選択したコマンド ライン パラメーターを検索します。そのために RTL のFindCmdLineSwitch()関数を使用できます。パラメータが存在する場合は、通常どおりゲームを実行します。それ以外の場合は、Win32CreateProcess()関数を使用してランチャー実行可能ファイルを実行し、それ自体を終了します。ランチャーの準備が整うと、CreateProcess()関数を使用してメインの実行可能ファイルを実行し、コマンド ライン パラメーターを渡してゲームを実行できます。

例えば:

Main.dpr:

Var
  SI: TStrartupInfo;
  PI: TProcessInformation;
Begin
  If not FindCmdLineSwitch('RunGameNow') then
  Begin
    ZeroMemory(@SI, SizeOf(SI));
    SI.cbSize := SizeOf(SI);
    ...
    If CreateProcess(nil, 'launcher.exe', nil, nil, False, 0, nil, nil, @SI, @PI) then
    Begin
     CloseHandle(PI.hThread);
     CloseHandle(PI.hProcess); 
    End;
    Exit;
  End;
  ... Run game normally...
End.

Launcher.dpr:

Begin
  ...
  CreateProcess(nil, 'main.exe /RunGameNow', nil, nil, False, 0, nil, nil, @SI, @PI)
  ...
End.
于 2012-07-09T02:42:35.963 に答える