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

Start another EXE with command line parameters in C#

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

我尝试使用 Button1 启动控制台应用程序(有效)。使用 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。

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

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

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