在C#中使用命令行参数启动另一个EXE

时间:2015-12-23 10:05:14

标签: c# command-line-interface exe

我想用参数启动一个EXE文件。

我尝试使用Button1启动一个consoleapp(正常)。使用Button2我试图用参数(工作)打开相同的控制台应用程序。使用Button3我试图用参数打开WindowsFromsApplication。 WindowsFromsApplication不运行并转换WindowsMessage,它无法打开(但不在调试模式中)。

如果我使用相同的WindowsFromsApplication,它可以使用桌面快捷方式和参数。

我的解决方案有什么问题?

 public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        System.Diagnostics.Process.Start(Application.StartupPath + "\\ParamTest1.exe");
    }

    private void button2_Click(object sender, EventArgs e)
    {
        System.Diagnostics.Process.Start(Application.StartupPath + "\\ParamTest1.exe", "Test");
    }

    private void button3_Click(object sender, EventArgs e)
    {
        System.Diagnostics.Process.Start(Application.StartupPath + "\\Tool.exe","UserName Password");
    }

tool.exe代码:

static class Program
{
    /// <summary>
    /// Der Haupteinstiegspunkt für die Anwendung.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FormMain(args));
    }
}

FormMain:

public partial class FormMain: Form
{
    string Raptoruser = "";

    public FormMain(string[] args)
    {
        InitializeComponent();

...

Visual Studio按计划在调试文件夹中复制EXE。

1 个答案:

答案 0 :(得分:0)

您需要使用ProcessStartInfo.Arguments属性传递参数。请注意,如果你的args包含你需要在你的args周围添加引号的空格,那么,我建议你需要像这样纠正你的代码:

Process.Start(new ProcessStartInfo(Application.StartupPath + "\\Tool.exe")
{
    Arguments = String.Format(@"""{0} {1}""", UserName, Password)
}
);

并确保您的Tool.exe与解决方案的可执行文件放在同一位置。