防止subprocess在c#中显示shell窗口

我正在使用ffmpeg编译video,而且我想阻止它在执行操作时显示控制台。

以下是我如何启动ffmpeg:

ProcessStartInfo si = new ProcessStartInfo(); si.Arguments = string.Format("-y -loop 1 -t " + DucationToString(frameDuration) + " -r 25 -f image2 -i \"{0}\" \"{1}\"", item.Value, otpt); si.FileName = "ffmpeg"; si.UseShellExecute = false; Process.Start(si).WaitForExit(); 

无论我在ProcessStartInfo尝试的设置如何,控制台总是显示出来。

如何防止在创buildsubprocess时显示控制台?

你应该尝试使用

 ProcessStartInfo si = new ProcessStartInfo(); si.WindowStyle = ProcessWindowStyle.Hidden; si.CreateNoWindow = true; si.UseShellExecute = false; 

MSDN参考

ProcessStartInfo.CreateNoWindow设置为true

请注意

要使用ProcessWindowStyle.HiddenProcessStartInfo.CreateNoWindowProcessStartInfo.UseShellExecute属性必须为false

你有没有在你的代码中加入这个

  si.CreateNoWindow = true; si.RedirectStandardOutput = true;