C#:将外部控制台程序作为隐藏运行

任何人都可以告诉我如何从Winforms应用程序生成另一个控制台应用程序,但(A)不显示屏幕上的控制台窗口,(B)仍然获得应用程序的标准输出? 目前我有以下内容:

Process SomeProgram = new Process(); SomeProgram.StartInfo.FileName = @"c:\foo.exe"; SomeProgram.StartInfo.Arguments = "bar"; SomeProgram.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; SomeProgram.StartInfo.UseShellExecute = false; SomeProgram.StartInfo.RedirectStandardOutput = true; SomeProgram.Start(); SomeProgram.WaitForExit(); string SomeProgramOutput = SomeProgram.StandardOutput.ReadToEnd(); 

如果我将RedirectStandardOutput设置为false,则控制台应用程序将按预期隐藏,但我无法获得标准输出文本。 但是,只要我将RedirectStandardOutput设置为true,窗口就会停止隐藏,尽管我能够获得程序的输出。

所以,我知道如何让控制台应用程序运行隐藏,我知道如何获得程序的输出,但我如何让它同时执行?

许多TIA

您缺少CreateNoWindow属性,在您的情况下必须将其设置为true

我认为它会对你有所帮助:

 System.Diagnostics.Process pProcess = new System.Diagnostics.Process(); pProcess.StartInfo.FileName = @"C:\Users\Vitor\ConsoleApplication1.exe"; pProcess.StartInfo.Arguments = "olaa"; //argument pProcess.StartInfo.UseShellExecute = false; pProcess.StartInfo.RedirectStandardOutput = true; pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows pProcess.Start(); string output = pProcess.StandardOutput.ReadToEnd(); //The output result pProcess.WaitForExit();