我正在为我的游戏社区编写一个客户端,该客户端的一个功能是通过客户端启动一个游戏,其参数将启动我们的社区mod包。
当我按下按钮时,游戏开始启动,一旦程序打开(任务栏中弹出图标),它就会立即关闭。
是否有一些我缺少的东西需要保持启动的exe运行?
这是我的代码:
private void btnLaunchGame_Click(object sender, EventArgs e)
{
string armaPath = gameDir+"/Expansion/beta/";
string filename = Path.Combine(armaPath, "arma2oa.exe");
string launchParams = "-noSplash -noFilePatching -showScriptErrors \"-name=Meta\" \"-mod=I:/Steam/steamapps/common/Arma 2;expansion;expansion/beta;expansion/beta/expansion;servermods/@HC_DAYZ;servermods/@HC_WEAPONS;servermods/@HC_EXTRAS;servermods/@HC_ACE\"";
System.Diagnostics.Process.Start(filename, launchParams);
}//close Game Launch
任何想法都表示赞赏!
我有一个.bat文件,可以使用下面列出的启动参数完美地执行游戏,这可能有助于查明我的问题的原因: http://puu.sh/5CGKk.png(无法以可读格式粘贴代码)。
答案 0 :(得分:1)
尝试使用Process
:
Process process = new Process();
process.StartInfo.FileName = "arma2oa.exe";
process.StartInfo.Arguments = "-noSplash -noFilePatching -showScriptErrors \"-name=Meta\" \"-mod=I:/Steam/steamapps/common/Arma 2;expansion;expansion/beta;expansion/beta/expansion;servermods/@HC_DAYZ;servermods/@HC_WEAPONS;servermods/@HC_EXTRAS;servermods/@HC_ACE\"";
process.StartInfo.WorkingDirectory = gameDir + "/Expansion/beta/";
process.Start();
可能是exe需要设置工作目录的内容。或者它会崩溃,无法加载资源。
如果这不起作用,那么您可能需要添加
process.WaitForInputIdle();
退出函数运行过程之前。我不知道为什么,但是在没有这种等待的情况下运行Acrobat Reader有时可能会产生一个奇怪的效果:Acrobat正在运行,但是没有显示通过参数传递的文档。也许与垃圾收集器或Process
本身有关。
答案 1 :(得分:0)
尝试以下
using (Process process = new Process())
{
ProcessStartInfo startInfo = new ProcessStartInfo("C:\Program Files\Arma2oa\Arma2oa.exe");
startInfo.Arguments = "-noSplash -noFilePatching -showScriptErrors \"-name=Meta\" \"-mod=I:/Steam/steamapps/common/Arma 2;expansion;expansion/beta;expansion/beta/expansion;servermods/@HC_DAYZ;servermods/@HC_WEAPONS;servermods/@HC_EXTRAS;servermods/@HC_ACE\"";
process.StartInfo = startInfo;
process.Start();
}