2015-07-19 57 views
-2

我已经创建了一个基本上加载视频文件的GUI应用程序,按顺序启动了3个进程参数(ffmpeg,x264,mp4box),并且可以根据需要中止。c#启动过程没有焦点

我试图找出一种方法来启动这些进程,而无需他们从任何打开的程序窃取焦点。不一定是原始形式本身......它可能是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); 
         } 

我知道如何使用与AppWinStyle的Microsoft.VisualBasic程序参考和Shell命令,因为它有没有重点推出的选项,我只是” t似乎弄清楚如何修改我的代码以使其适用于此。

任何想法?

感谢

+0

你为什么要创建外部进程和监视更多信息?有些视频库无法处理什么问题? – EZI

+0

我试图自动化一个MXF视频文件并创建一个mp4的过程。我更喜欢在这个过程中使用ffmpeg/x264,因为我知道它会产生兼容的视频/音频。我想有能力看到每个过程有多远 – Derek

+0

任何想法? 不知道为什么我有-2,我彻底搜索了这个论坛和其他人都试图找到答案,但没有人能够。 我知道有Microsoft.VisualBasic参考中的代码,我只是需要一些帮助实现它,如果它甚至可能。 谢谢! – Derek

回答

0
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 

是,将你要找的?下面

How to start Process hidden?
http://www.dotnetperls.com/process-start
ProcessWindowStyle Enumeration

+0

这会启动隐藏的应用程序,我无法监控它们。我想有能力监视它们,但是我不希望它们在启动过程启动时关注焦点。 – Derek

+0

如果您没有看到窗口或被通知进程已启动,您将如何监控它们? –

+0

那么,这个过程仍然会显示在任务栏中,并在我当前运行的任何程序后面打开 – Derek