启动C#windows应用程序并等待退出命令行

时间:2014-03-13 10:13:10

标签: c# windows console-application windows-applications

通常,在命令提示符下调用Windows应用程序不会等待退出。输入myFormApp.exe并按回车键后,将显示一个表单,命令提示符会立即移至下一行。

C:\> myFormApp.exe
C:\>     # this line will display immediately

我知道使用cmd /c将等待应用程序退出。

C:\> cmd /c myFormApp.exe
C:\>     # this line will display after myFormApp.exe closed

但即使缺少cmd /c,我也想等待。

有没有办法阻止命令提示符移动到新行,编辑myFormApp.exe源代码?

向Windows应用程序添加AllocConsole将显示控制台,但它不会使命令提示符等待退出。

if (args.Length > 0)
{
    // Command line given, display console
    AllocConsole();
}
else
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

任何建议将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以编写一个包装winforms应用程序的简单控制台应用程序。您可以在控制台应用程序中启动一个进程:

static void Main(string[] args)
{
    Console.WriteLine("Hello!");

    var process = new Process() { StartInfo = new ProcessStartInfo { FileName = @"WindowsFormsApplication1.exe" } };
    process.Start();
    process.WaitForExit();

    Console.WriteLine("bye bye!");
}

或者,您可以添加对winforms应用程序的引用,并在控制台应用程序中实例化winforms类:

static void Main(string[] args)
{
    Console.WriteLine("Hello!");

    var mainForm = new WindowsFormsApplication1.Form1();
    mainForm.ShowDialog();

    Console.WriteLine("bye bye!");
}

答案 1 :(得分:1)

无需编写其他应用。 Windows-start中带有/wait选项的此类文件已经存在。它不仅会等待您的应用程序完成执行,还将设置返回的错误级别(也称为ExitCode)。