我有以下代码:

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仅在UseShellExecutefalse时才有效。这是因为CreateNoWindow映射到传递给CREATE_NO_WINDOWCreateProcess进程创建标志。并且CreateProcess仅在UseShellExecutefalse时被调用。

可以从documentation找到更多信息:


  适当的价值
  
  如果应该在不创建新窗口的情况下启动该过程,则为true;否则为假。默认为false。
  
  备注
  
  如果UseShellExecute属性为true或UserName和Password
  属性不为null,则忽略CreateNoWindow属性值
  并创建一个新窗口。

09-27 20:32