执行控制台进程+重定向没有控制台窗口?

时间:2012-08-11 20:29:48

标签: .net shellexecute

以下是您可以运行的一些实际代码。执行此操作时,您会注意到5个控制台窗口会快速弹出并消失。

如何在不弹出这些窗口的情况下重定向stdout / err?我尝试了一些事情,到目前为止失败了。对于我的实际使用,我需要争论和重定向标准输入,但这不应该影响解决方案。

    [STAThread]
    static void Main()
    {
        for(int i=0;i<5;i++)
        {
            var process = new System.Diagnostics.Process();
            process.StartInfo.FileName = @"C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe";
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //doesnt seem to have an effect
            process.Start();
            process.WaitForExit();
            var resO = process.StandardOutput.ReadToEnd();
            var resE = process.StandardError.ReadToEnd();
        }
    }

1 个答案:

答案 0 :(得分:1)

您应该尝试将CreateNoWindow设置为true

process.StartInfo.CreateNoWindow = true;