2013-03-13 55 views
0

我想通过提供参数启动一个过程(不确定这些可以被称为“参数”...见下文)。现在,这是一个有点特殊:启动程序通常在快捷方式目标

  • 过程是一个图形用户界面(游戏 - 使命召唤4多人的呼叫),
  • 我有一个Windows快捷方式,该GUI具有以下目标:"C:\\Path To Game\\game.exe" + connect [serverip](注意+ )。当我启动这个快捷方式时,GUI将启动并执行参数connect [serverip](游戏实际启动并连接到服务器)。

我试过如下:

  1. Process.Start("C:\\Path To Game\\game.exe + connect [serverip]");

    但这显然与Win32Exception “系统找不到指定的文件” 结束。

  2. var psi = new ProcessStartInfo(); 
    psi.FileName = "C:\\Path To Game\\game.exe"; 
    psi.Arguments = "+ connect [serverip]"; 
    Process.Start(psi); 
    

    ,这产生在GUI中的错误(游戏没有启动,并说:“WIN_IMPROPER_QUIT_BODY”)。

任何想法如何提供这些参数我的过程吗?

回答

2

是否有可能你需要设置WorkingDirectory为游戏

string exePath = "C:\\Path To Game\\game.exe"; 
var psi = new ProcessStartInfo(); 
psi.FileName = exePath; 
psi.Arguments = "+ connect [serverip]"; 
psi.WorkingDirectory = Path.GetDirectoryName(exePath); 
Process.Start(psi); 
+0

就是这样!谢谢。 – Otiel 2013-03-13 22:01:32

0

选项2是去那里的方式,但是发生了什么?'+'?这不是一个特殊的字符,只是传递给命令,所以你也需要在psi.Arguments的开头加入它。

+0

对不起,这是我的问题(现在编辑)的错误。我用'+'尝试过,它不起作用。 – Otiel 2013-03-13 21:57:24

0

你必须使用:

psi.Arguments = "+connect [serverip]"; 

+connect之间没有空格)。

+0

也不起作用,但谢谢([@ sa_ddam213](http://stackoverflow.com/a/15397275/825024)解决方案)。 – Otiel 2013-03-13 22:02:37