1

我有两个 .exe 程序,一个是游戏启动器,另一个是主可执行文件。如果有人打开它,我将如何让我的主要可执行文件运行游戏启动器。这将与 .dpr 文件和一些 Windows API 有关,我猜只是不确定从什么/从哪里开始说实话。

我想要这样的原因仅仅是因为,游戏启动器将用于更新游戏,然后在完成启动游戏时,人们将始终使用最新的 up2date 文件。

所以我也需要的功能是:我可以点击 Main Executable 或 Launcher Executable 两者都会打开 Launcher Executable,然后当更新/下载完成时,当用户单击 Start 按钮时,Launcher 将启动 Main Executable。

/谢谢

4

1 回答 1

2

让主要的可执行文件启动代码查找您选择的命令行参数。FindCmdLineSwitch()您可以为此目的使用 RTL 的功能。如果该参数存在,则正常运行游戏。否则,使用 Win32CreateProcess()函数运行启动器可执行文件,然后自行退出。当启动器准备就绪时,它可以使用该CreateProcess()函数运行主可执行文件,将命令行参数传递给它来运行游戏。

例如:

主要.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.

启动器.dpr:

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