简体   繁体   English

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

[英]Prevent child process from showing a shell window in c#

I'm using ffmpeg to compile videos, and I'd like to prevent it from displaying a console when performing actions. 我正在使用ffmpeg编译视频,我想阻止它在执行操作时显示控制台。

Here's how I start 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();

No matter the settings I try in ProcessStartInfo , the console always shows up. 无论我在ProcessStartInfo尝试的设置,控制台始终显示。

How do I prevent the console from being shown when creating child process? 如何在创建子进程时阻止显示控制台?

You should try to use 你应该尝试使用

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

MSDN refs MSDN参考

Set ProcessStartInfo.CreateNoWindow to true . ProcessStartInfo.CreateNoWindow设置为true

Note that: 请注意

To use ProcessWindowStyle.Hidden or ProcessStartInfo.CreateNoWindow the ProcessStartInfo.UseShellExecute property must be false . 要使用ProcessWindowStyle.HiddenProcessStartInfo.CreateNoWindowProcessStartInfo.UseShellExecute属性必须为false

Have you added this in your code 您是否在代码中添加了此内容

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM