防止子进程在c#中显示shell窗口

时间:2012-07-18 10:00:08

标签: c# windows process processstartinfo

我正在使用ffmpeg来编辑视频,我想阻止它在执行操作时显示控制台。

以下是我如何开始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尝试的设置如何,控制台始终显示。

如何在创建子进程时阻止显示控制台?

3 个答案:

答案 0 :(得分:5)

你应该尝试使用

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

MSDN refs

答案 1 :(得分:2)

ProcessStartInfo.CreateNoWindow设为true

注意

要使用ProcessWindowStyle.HiddenProcessStartInfo.CreateNoWindowProcessStartInfo.UseShellExecute媒体资源必须为false

答案 2 :(得分:1)

您是否已在代码中添加此内容

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