以父表单的子表单启动进程失败

时间:2011-08-28 05:25:34

标签: forms process

我正在开发一个有两种形式的应用程序。 父表单包含(视频)文件名列表,另一种形式(子)我启动一个进程(使用mplayer)来显示相应的视频。

我的目标是在点击主(父)表单中的文件名(listview)后以子窗体开始播放视频。 视频表单必须是“浮动窗口”。所以没有作为MDI形式嵌入主窗体中!!

当我直接以视频形式(儿童)启动播放器时,一切正常(文件名可从主窗体中获得),视频以视频形式显示。 (开始按钮调用方法OpenFile())

当我尝试从主窗体启动视频时,视频开始播放,但未以视频形式显示(我可以听到音乐)

frmVideo formVideo = new frmVideo();
formVideo.OpenFile();

我假设主表单和视频表单之间的句柄出现问题。

public void OpenFile()
    {
        //
        try
        {
            ps = new Process();

            //Path of Mplayer exe
            ps.StartInfo.FileName = @"C:\Program Files\SMPlayer\mplayer\mplayer.exe";

            ps.StartInfo.UseShellExecute = false;
            ps.StartInfo.CreateNoWindow = true;

            ps.StartInfo.RedirectStandardInput = true;
            args = "-nofs -noquiet -identify -slave ";
            args += "-nomouseinput -sub-fuzziness 1 ";

            //-wid will tell MPlayer to show output inisde our panel
            args += " -vo direct3d, -ao dsound  -wid ";
            int id = (int)panel1.Handle;
            args += id;

            //
            string filename = Form1.videoFile;  //file name from my main form

            // start player,
            ps.StartInfo.Arguments = args + " \"" + filename + "\"";
            ps.Start();

      }

0 个答案:

没有答案