[Winform]Media Player播放控制面板控制,单击事件截获

摘要

在项目中有这样的一个需求,需要在一台宣传机器上循环播放一段视频,并在体验的用户单击鼠标左键的时候推出全屏,可以让用户体验电脑的其它功能。

解决方案

考虑到都是windows系统的,所以采用了windows自带的播放器,Windows Media Player Com组件作为视频播放器。

如图

但是,为了更好满足需求,下面的播放控制面板需要隐藏,该怎么做呢?最后找到解决方案,设置播放器属性

windowsMediaPlay.uiMode = "none";

循环播放的代码,这里为播放器添加播放列表,代码如下:

 string[] filePaths = Directory.GetFiles(_videoDirPath).Where(x => x.EndsWith(".mp4") || x.EndsWith(".wmv")).ToArray();
                //添加循环播放列表
                foreach (var item in filePaths)
                {
                    windowsMediaPlay.currentPlaylist.appendItem(windowsMediaPlay.newMedia(item));
                }
                //不再任务栏显示
                this.ShowInTaskbar = false;
                this.FormClosing += VideoFrm_FormClosing;
                windowsMediaPlay.ClickEvent += windowsMediaPlay_ClickEvent;
                windowsMediaPlay.KeyUpEvent += windowsMediaPlay_KeyUpEvent;
                windowsMediaPlay.StatusChange += windowsMediaPlay_StatusChange;
                windowsMediaPlay.ErrorEvent += windowsMediaPlay_ErrorEvent;
                windowsMediaPlay.DoubleClickEvent += windowsMediaPlay_DoubleClickEvent;
                windowsMediaPlay.Ctlcontrols.play();

那么,如何在用户单击的时候,让程序最小化?

注意

在uiMode = "none"的情况下,单击会触发视频暂停的事件,并不会退出。视频暂停,是不是视频状态变化了呢?所以在截获单击视频事件,我们完全可以在视频暂停的时候,对其进行截获。statechange事件对应的方法如下:

       void windowsMediaPlay_StatusChange(object sender, EventArgs e)
        {
            /*
             * 0 Undefined Windows Media Player is in an undefined state.(未定义)
               1 Stopped Playback of the current media item is stopped.(停止)
               2 Paused Playback of the current media item is paused. When a media item is paused, resuming playback begins from the same location.(停留)
               3 Playing The current media item is playing.(播放)
               4 ScanForward The current media item is fast forwarding.
               5 ScanReverse The current media item is fast rewinding.
               6 Buffering The current media item is getting additional data from the server.(转换)
               7 Waiting Connection is established, but the server is not sending data. Waiting for session to begin.(暂停)
               8 MediaEnded Media item has completed playback. (播放结束)
               9 Transitioning Preparing new media item.
               10 Ready Ready to begin playing.(准备就绪)
               11 Reconnecting Reconnecting to stream.(重新连接)
           */
            try
            {
                switch (windowsMediaPlay.playState)
                {
                    case WMPLib.WMPPlayState.wmppsBuffering:
                        break;
                    case WMPLib.WMPPlayState.wmppsLast:
                        break;
                    case WMPLib.WMPPlayState.wmppsMediaEnded:
                        break;
                    case WMPLib.WMPPlayState.wmppsPaused:
                        //单击了视频则退出
                        HideVideo();
                        break;
                    case WMPLib.WMPPlayState.wmppsPlaying:
                        if (!windowsMediaPlay.fullScreen)
                        {
                            windowsMediaPlay.fullScreen = true;
                        }
                        break;
                    case WMPLib.WMPPlayState.wmppsReady:
                        break;
                    case WMPLib.WMPPlayState.wmppsReconnecting:
                        break;
                    case WMPLib.WMPPlayState.wmppsScanForward:
                        break;
                    case WMPLib.WMPPlayState.wmppsScanReverse:
                        break;
                    case WMPLib.WMPPlayState.wmppsStopped:
                        break;
                    case WMPLib.WMPPlayState.wmppsTransitioning:
                        break;
                    case WMPLib.WMPPlayState.wmppsUndefined:
                        break;
                    case WMPLib.WMPPlayState.wmppsWaiting:

                        break;
                    default:
                        break;
                }
            }
            catch (Exception ex)
            {
                LogInfoData.WriteLog(new LogInfo
                           {
                               Dt = DateTime.Now,
                               IsSend = false,
                               Message = ex.Message,
                               Op = "media_state_change_err"
                           });
            }
        }

关于双击全屏截获的逻辑也可以在这里处理,双击之前肯定会有一次单击,所以在这里也能进行双击最大化的处理。

时间: 2024-08-21 14:04:34

[Winform]Media Player播放控制面板控制,单击事件截获的相关文章

[Winform]Media Player com组件应用中遇到的问题

摘要 最近一个项目中,需要用到在客户端全屏循环播放视频,当时考虑使用开源的播放器,但控制起来不方便,然后考虑既然都是windows系统,那么可以考虑使用微软自带的Media Player播放器.所以在开发中,就在winform中嵌入了Media Player组件.下面就将开发中遇到的问题,做一个总结. 问题与解决办法 首先要搞清楚Media Player到底是x86的还是x86的.我电脑系统是x64的,可以尝试打开Media Player,在任务管理器中查看是不是x64的. 所以media pl

基于MFC的Media Player播放器的制作(3---功能实现)

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 下面我们试试一下,按下退出Button退出播放器的功能: 首先,我们双击退出Button按钮,就会弹出下图的框: 上面的弄好之后我们就实现退出函数的功能: 这个代码写好之后,我们可以运行一下,在单击退出按钮,可以发现,按下之后我 们的播放器自动退出 下面我们在实现打开文件的功能,这个功能比较复杂,第一步我们首先双击打开文件按钮,在CPandaPlayerDlg.cpp中创建函 数OnOpenfile():创建过程同上. 可以看到函数:

[Winform]Media Player组件全屏播放的设置

摘要 在设置程序开始运行时,让视频全屏播放时,直接设置 windowsMediaPlay.fullScreen = true; 会报错,代码如下 windowsMediaPlay.URL = _videoPath; windowsMediaPlay.Ctlcontrols.play(); windowsMediaPlay.fullScreen = true; windowsMediaPlay.ClickEvent += windowsMediaPlay_ClickEvent; windowsMe

windows media player 播放视频

一.新建windows应用程序项目,添加vedioForm窗体 二.在com组件中找到windows media player,添加引用 三.代码如下: 1 public partial class VedioForm : Form 2 { 3 private AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1; 4 public VedioForm() 5 { 6 InitializeComponent(); 7 InitVedio(); 8

Swift - 使用Media Player播放本地视频,在线视频

Media Player框架用于播放本地视频.音频,也可以在线播放视频和音频. 1,播放器MPMovieControlStyle样式有如下几种: (1)None: 没有播放控制控件 (2)Embedded:嵌入式播放控件.没有Done按钮 (3)FullScreen:全屏播放,有播放进度.Done按钮和快进等控件    2,播放本地视频 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 im

基于MFC的Media Player播放器的制作(2---导入第三方库和介绍第三方库)

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 这一节我们介绍如何导入类库,和介绍类库的一功能和介绍MFC的一些主要的模块部分.下面是如何导入类库.第一步我们选中 Media Player的控件(也就是刚才的那个黑黑的窗口),按下快捷键Ctrl+W就会进入下面的窗口,具体操作看下图: 如上图:Ctrl + W后,选择 Member Variables,找到 IDC_OCX1,然后单击 Add Variables,出现弹出框后点击确定. 确定之后,又会弹出一个弹出框,如上图,上面的弹

基于MFC的Media Player播放器的控件方法和属性介绍

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 因为使用第三方多媒体库或是第三方控件(Media Player)辅助播放,我们则必须要了解到Media Player控件的一些属性 和方法.下面我们介绍一些常用的方法和属性. 下面这两张图片是我们导入的控件的类库,我们使用的一些方法和属性全部包含在下面的文件当中. >>.CWMPPlayer4 1 CString GetUrl(); 2 //取得指定位置 3 void SetUrl(LPCTSTR lpszNewValue); 4

基于MFC的Media Player播放器的制作介绍

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 因为这次多媒体课程设计做一个基于MFC的播放器,因为本人实力太菜,需要播放音乐或视频文件时候,自己写不出解码 函数,所以准备使用第三方多媒体库或是第三方控件辅助播放,找来找去还是觉得用Windows Media Player控件来编写比较 方便,因此这次播放器的制作主要是根据Media Player控件来实现,因为在微软平台已经封装好了一系列的解码方法(如声音解 码和视频解码)和一些常用的操作方法(如声音音量的增加,快进等等),因此使

基于MFC的Media Player播放器的制作(4---功能实现代码)

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 下面附上我整个的播放器功能实现部分的代码,如果有需要整个Project的联系我邮箱:[email protected] PandaPlayerDlg.h 1 // PandaPlayerDlg.h : header file 2 // 3 //{{AFX_INCLUDES() 4 #include "wmpplayer4.h" 5 #include "wmpcontrols.h" 6 #include &