我有以下代码:
string d = "-f image2 -framerate 9 -i E:\\REC\\Temp\\%06d.jpeg -r 30 E:\\REC\\Video\\" + label1.Text + ".avi";
//string d = "-f dshow -i video=\"screen-capture-recorder\" E:\\REC\\" + label1.Text + ".flv";
Process proc = new Process();
proc.StartInfo.FileName = "E:\\ffmpeg\\bin\\ffmpeg.exe";
proc.StartInfo.Arguments = d;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
if (!proc.Start())
{
Console.WriteLine("Error starting");
return;
}
proc.WaitForExit();
当它运行时,
ffmpeg.exe
就像这样:我的问题是如何隐藏此窗口?
最佳答案
您需要以下设置组合:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
就是这样。
原因是密钥设置为
CreateNoWindow
,必须为true
。但是CreateNoWindow
仅在UseShellExecute
为false
时才有效。这是因为CreateNoWindow
映射到传递给CREATE_NO_WINDOW
的CreateProcess
进程创建标志。并且CreateProcess
仅在UseShellExecute
为false
时被调用。可以从documentation找到更多信息:
适当的价值
如果应该在不创建新窗口的情况下启动该过程,则为true;否则为假。默认为false。
备注
如果UseShellExecute属性为true或UserName和Password
属性不为null,则忽略CreateNoWindow属性值
并创建一个新窗口。