2012-07-08 151 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