我写一个客户对我的游戏社区和该客户端的功能之一是通过推出客户端游戏与参数,这将使我们在推出社区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
任何想法表示赞赏!
我将与下面列出的启动ARGS完美地执行游戏.bat文件,这可能可能帮助找出我的问题的原因: http://puu.sh/5CGKk.png (无法获取代码粘贴可读的格式)。
尝试使用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
本身。
尝试以下
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();
}