C#:以隐藏方式运行外部控制台程序

标签 c# process console

谁能告诉我如何从 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

最佳答案

您缺少在您的情况下必须设置为 trueCreateNoWindow 属性。

关于C#:以隐藏方式运行外部控制台程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430541/

相关文章:

c# - 正则表达式匹配问题

c# - 在 Windows 窗体应用程序中实现单词拼写检查

c# - Selenium - 如何断言该字段等于 0

c# - 仅在需要时使用科学记数法

c - 与进程树中的兄弟共享PID

java - 如何使用包含双引号的参数从 Java 启动进程

c++ - 以编程方式计算 Windows 上进程的开始时间

Node.js 6 和匿名对象

c++ - 我如何简单地读取控制台输出

c# - 如何允许用户在 C# 中重试或退出控制台程序?