在 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 与解决方案的可执行文件位于同一位置。
我想用参数启动一个 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 与解决方案的可执行文件位于同一位置。