运行 来自 C# 的 VBScript 隐藏 window 和捕获输出

Run VBScript from C# with hidden window and capture output

我能够从 C# 运行 VBScript 并使用此代码捕获标准输出和错误流:

var process = new Process();
process.StartInfo.FileName = "cscript";
process.StartInfo.WorkingDirectory = @"C:\scripts\";
process.StartInfo.Arguments = "//B //Nologo vbscript.vbs";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.Start();
...

这工作正常,但显示控制台 window。根据this answer,我可以设置process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden来隐藏控制台window。我发现这只有在我不捕获控制台输出时才有效,即如果我注释掉这些行:

//process.StartInfo.RedirectStandardOutput = true;
//process.StartInfo.RedirectStandardError = true;
//process.StartInfo.UseShellExecute = false;

有什么方法可以隐藏控制台 window 并且仍然能够捕获脚本的输出?

您需要再添加 1 行:

process.StartInfo.CreateNoWindow = true;