我正在开发一个有两种形式的应用程序。 父表单包含(视频)文件名列表,另一种形式(子)我启动一个进程(使用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();
}