2012-07-08 129 views
1

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

我想要这样的理由很简单,因为游戏启动器将用于更新游戏,然后当完成启动游戏时,人们将始终使用最新的up2date文件。

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

/感谢

回答

2

有主执行程序的启动代码来查找您所选择的命令行参数。您可以使用RTL的FindCmdLineSwitch()函数来达到此目的。如果参数存在,请正常运行游戏。否则,使用Win32 CreateProcess()函数运行启动程序可执行文件,然后退出。当启动器准备就绪时,它可以使用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. 
+0

谢谢,接受。现在只需要检出所有与这些相关的信息。 PS:对不起,延迟回复。 – Se7en 2012-07-09 21:21:57