如何在C#中向另一个进程传递参数

7

我刚刚创建了一个应用程序,使用以下代码启动进程:

string [] args = {"a", "b"};
             Process.Start ("C: \ \ demo.exe" String.Join ("", args));

我希望能够将参数从这个应用程序传递给我启动的进程。
我在我启动的进程项目中应该输入参数到哪里? 我试图将它们放在内,但还不确定是否正确。
static void Main (string [] args) {...

但它们并不以其他形式提供。 感谢您的帮助。

我的真正问题是我启动的进程(demo.exe)没有参数,我需要知道在demo.exe项目中应该放置参数,谢谢。 - Ldg
2个回答

20
Process p= new Process();
p.StartInfo.FileName = "demo.exe";
p.StartInfo.Arguments = "a b";
p.Start();
或者
Process.Start("demo.exe", "a b");

in demo.exe

static void Main (string [] args)
{
  Console.WriteLine(args[0]);
  Console.WriteLine(args[1]);
}

你问如何保存这些参数。你可以创建一个带有静态属性的新类,并将这些参数保存在那里。

class ParamHolder
{
  public static string[] Params { get; set;}
}

在主函数中

static void Main (string [] args)
{
  ParamHolder.Params = args;
}

要在程序的任何地方获取参数,请使用:

Console.WriteLine(ConsoleParamHolder.Params[0]);
Console.WriteLine(ConsoleParamHolder.Params[1]);

等等。


谢谢Robert,但我需要知道在aa.exe项目中,我应该把参数放在哪里。 - Ldg
运行应用程序后,它们将出现在您的参数中,这取决于“demo.exe”是用哪种语言编写的。如果是C#,它们将在主函数的args中。如果按照我上面写的传递它们,应该可以无问题地工作 :) - Robert
谢谢Robert,但是现在我该如何在我启动的其他进程表单中调用这些args? - Ldg
你可以将它们保存在任何地方。比如说,你创建了一个带有静态字段的类,并将这些参数保存在这些字段中。当你保存它时,你就可以从任何地方获取它们。请检查我编辑过的帖子。 - Robert

1
主应用程序代码:

var process = new Process();
process.StartInfo.FileName = "demo.exe" // Path to your demo application.
process.StartInfo.Arguments = "a b c"   // Your arguments
process.Start();

在您的演示应用程序中(我假设这是控制台应用程序)。
static void Main (string [] args)
{
    var agrumentOne = args[0];
    var agrumentTwo = args[1];
    var agrumentThree = args[3];
}

在这里,argumentOne、argumentTwo和argumentThree将包含"a"、"b"和"c"。

谢谢Faisal Hafeez,上面的答案也有效。再次感谢! - Ldg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接