在已运行的控制台应用程序内运行交互式进程,无需打开新窗口

时间:2017-12-12 21:33:21

标签: c# .net console-application io-redirection processstartinfo

我意识到这看起来像是很多其他问题,但是我看了几个小时都没看过,我从来没有找到我需要的真正答案,所以请听我说:

这适用于.NET C#控制台应用程序。在其中,我想使用Process.Start调用Windows可执行文件,但是在运行时没有打开新的控制台窗口。我还希望可执行文件能够输出到控制台并正常响应用户输入。

你是怎么做到的?设置ProcessStartInfo.CreateNoWindowProcessStartInfo.WindowStyle?尝试使输入/输出重定向工作数小时?

编辑: smh ...这与那里的“可能的重复”不同,因为:

  • 这适用于想要在其自身内无缝运行 Windows命令的控制台应用程序,就好像该命令是控制台应用程序本身的一部分一样。例如:创建一个新的C#控制台应用程序并使其运行Windows copy命令。
  • 此外,我需要用户能够与运行命令交互(例如,如果copy询问是否覆盖我希望用户回答),所以隐藏窗口与this中一样,或this可能的答案是禁忌。
  • 我想强调单个 UseShellExecute属性如何解决问题,而不会在this等答案中产生误导性漏洞(例如,关于I / O重定向),或者this,这又让我浪费了几个小时。

1 个答案:

答案 0 :(得分:0)

简单:ProcessStartInfo.UseShellExecute=false。而已! (我知道,我自己也不敢相信)。

经过几个小时尝试各种各样的事情,这对我有用 - 甚至没有设置CreateNoWindow=true!此外,最后,我确实发现this MSDN post确认了我发现的内容。去图!