通常在快捷方式目标中使用参数启动程序

时间:2013-03-13 21:49:32

标签: c# command-line process arguments

我想通过提供参数开始一个过程(不确定这些可以被称为“参数”......见下文)。现在这有点特别:

  • 该过程是一个GUI(游戏 - 使命召唤4多人游戏),
  • 我有一个指向此GUI的Windows快捷方式,其中包含以下目标:"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”)。

  3. 如何向我的流程提供这些参数的任何想法?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你必须使用:

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

+connect之间没有空格。)