c#启动过程无需关注

时间:2015-07-19 21:11:35

标签: c#

我创建了一个基本上加载视频文件的GUI应用程序,按顺序启动3个带有参数的进程(ffmpeg,x264,mp4box),并且能够在需要时中止。

我试图找到一种方法来启动这些流程,而不会从任何打开的程序中窃取焦点。不一定是原始形式本身...它可能是IE,MS WORD等...我知道ProcessWindowStyle,但是,所有选项仍然需要关注。我也不想隐藏这些进程。

这是我启动流程的代码示例

        Process ffmpegProcess = new Process();
            ffmpegProcess.StartInfo.FileName = Settings.Default.ffmpeg;
            ffmpegProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;   
            string outputaud = text2 + "_audio.aac";
            string AudioBitrate = this.cBAudiobitrate.GetItemText(this.cBAudiobitrate.SelectedItem);
            string ffargs = "-i " + quote + SourceFile + quote + " -filter_complex " + quote + "[0:2][0:3]amerge=inputs=2,pan=stereo|c0=c0+c1|c1=c0+c1[aout]" + quote + " -map " + quote + "[aout]" + quote + " -strict experimental -acodec aac -b:a " + AudioBitrate + "k " + quote + outputaud + quote;              
            ffmpegProcess.StartInfo.Arguments = ffargs;
            ffmpegProcess.Start();

                         while (!ffmpegProcess.HasExited)
                         {
                             if (this.bw404p_withaudio.CancellationPending)
                             {
                                 ffmpegProcess.Kill();

                                 e.Cancel = true;

                                 return;
                             }
                             Thread.Sleep(1000);
                         }

我知道将Microsoft.VisualBasic Reference和Shell命令与AppWinStyle一起使用,因为它具有无焦点启动的选项,我似乎无法弄清楚如何修改我的代码以使其适用。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)