C#学习之路之使用windows media player 实例

来源:互联网 发布:男生知乎 编辑:程序博客网 时间:2024/05/18 01:43

最近, 用C#写了个小程序。自娱自乐哈~~~~

调用AxWMPLib库,编写了个4分屏的媒体播放器。

不废话了。先来看看结果。


这里,笔者今天捣鼓了一个下午,完全没招。>M< 

这里没有实现 “上一个”, “下一个”, “播放列表”,“剩余时间:”。

若你有很好的关于做好这个 “剩余时间:”, 还请指教哈。^_^  

~~~~~下面附上代码,在代码的最后,附上源码链接地址~~~

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace NewStyle{    public partial class Form1 : Form    {        enum ChangePlayer        {            player1,            player2,            player3,            player4        }        ChangePlayer changedPlayer;        public Form1()        {            InitializeComponent();        }        ///----菜单栏帮助下的关于按钮        private void 关于AToolStripMenuItem_Click(object sender, EventArgs e)        {            MessageBox.Show("author : 墨_晴 \n\n开发环境:VS2013\n\n开发语言:C# \n\nversion : 1.0");        }        ///----面板添加按钮事件函数        ///----这里默认使用播放器1打开 文件        private void addBtn_Click(object sender, EventArgs e)        {            OpenFileDialog openFileDlg = new OpenFileDialog();            openFileDlg.Filter = "*.mp3|*.mp3|*.wma|*.wma|*.rmvb|*.rmvb|*.wmv|*.wmv|all|*.*";            if (openFileDlg.ShowDialog() == DialogResult.OK)            {                mediaPlayer1.URL = openFileDlg.FileName;                mediaPlayer1.settings.volume = volume_trackBar.Value;                media1_Timer.Start();                /////----显示曲名 + 时间                //songName_label.Text = "曲名:" + mediaPlayer1.Ctlcontrols.currentItem.name;                //time_label.Text = "剩余时间:" + mediaPlayer1.currentMedia.durationString;                                ///----播放列 列表添加播放清单                controlEnable(true);            }        }        ///---计时器暂停        private void timerStopped(Timer timer)        {            timer.Stop();        }              ///---播放器暂停        private void playerStopped(AxWMPLib.AxWindowsMediaPlayer mediaPlayer)        {            mediaPlayer.Ctlcontrols.pause();        }        ///----播放器1        private void mediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)        {            ///----其它播放器的计时器停下来,并且设置其它 播放器处于暂停状态            timerStopped(media2_Timer);            timerStopped(media3_Timer);            timerStopped(media4_Timer);            playerStopped(mediaPlayer2);            playerStopped(mediaPlayer3);            playerStopped(mediaPlayer4);            ///---确定当前播放器            changedPlayer = ChangePlayer.player1;            ///---音量控制            volume_trackBar.Value = mediaPlayer1.settings.volume;            ///---进程条            process_trackBar.Value = (int)mediaPlayer1.Ctlcontrols.currentPosition;            ///----静音            muteBtn.Text = "静 音";            volume_trackBar.Maximum = (int)mediaPlayer1.settings.volume;        }        ///---播放器2        private void mediaPlayer2_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)        {            timerStopped(media1_Timer);            timerStopped(media3_Timer);            timerStopped(media4_Timer);            playerStopped(mediaPlayer1);            playerStopped(mediaPlayer3);            playerStopped(mediaPlayer4);            ///---确定当前播放器            changedPlayer = ChangePlayer.player2;            ///---音量控制            volume_trackBar.Value = mediaPlayer3.settings.volume;            ///---进程条            process_trackBar.Value = (int)mediaPlayer2.Ctlcontrols.currentPosition;            ///----静音            muteBtn.Text = "静 音";            volume_trackBar.Maximum = (int)mediaPlayer2.currentMedia.duration;        }        ///----播放器3        private void mediaPlayer3_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)        {            timerStopped(media1_Timer);            timerStopped(media2_Timer);            timerStopped(media4_Timer);            playerStopped(mediaPlayer1);            playerStopped(mediaPlayer2);            playerStopped(mediaPlayer4);            ///---确定当前播放器            changedPlayer = ChangePlayer.player3;            ///---音量控制            volume_trackBar.Value = mediaPlayer3.settings.volume;            ///---进程条            process_trackBar.Value = (int)mediaPlayer3.Ctlcontrols.currentPosition;            ///----静音            muteBtn.Text = "静 音";            volume_trackBar.Maximum = (int)mediaPlayer3.currentMedia.duration;        }        ///----播放器4        private void mediaPlayer4_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e)        {            timerStopped(media1_Timer);            timerStopped(media2_Timer);            timerStopped(media3_Timer);            playerStopped(mediaPlayer1);            playerStopped(mediaPlayer2);            playerStopped(mediaPlayer3);            ///---确定当前播放器            changedPlayer = ChangePlayer.player4;            ///---音量控制            volume_trackBar.Value = mediaPlayer4.settings.volume;            ///---进程条            process_trackBar.Value = (int)mediaPlayer4.Ctlcontrols.currentPosition;            ///----静音            muteBtn.Text = "静 音";            volume_trackBar.Maximum = (int)mediaPlayer4.currentMedia.duration;        }        ///----播放按钮事件函数        private void playBtn_Click(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                media1_Timer.Start();                mediaPlayer1.Ctlcontrols.play();            }            else if (changedPlayer == ChangePlayer.player2)            {                media2_Timer.Start();                mediaPlayer2.Ctlcontrols.play();            }            else if (changedPlayer == ChangePlayer.player3)            {                media3_Timer.Start();                mediaPlayer3.Ctlcontrols.play();            }            else if (changedPlayer == ChangePlayer.player4)            {                media4_Timer.Start();                mediaPlayer4.Ctlcontrols.play();            }        }        ///----暂停按钮        private void pauseBtn_Click(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                                mediaPlayer1.Ctlcontrols.pause();            }            else if (changedPlayer == ChangePlayer.player2)            {                           mediaPlayer2.Ctlcontrols.pause();            }            else if (changedPlayer == ChangePlayer.player3)            {                               mediaPlayer3.Ctlcontrols.pause();            }            else if (changedPlayer == ChangePlayer.player4)            {                                mediaPlayer4.Ctlcontrols.pause();            }        }        ///-----停止按钮事件        private void stopedBtn_Click(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                               mediaPlayer1.Ctlcontrols.stop();            }            else if (changedPlayer == ChangePlayer.player2)            {                             mediaPlayer2.Ctlcontrols.stop();            }            else if (changedPlayer == ChangePlayer.player3)            {                           mediaPlayer3.Ctlcontrols.stop();            }            else if (changedPlayer == ChangePlayer.player4)            {                             mediaPlayer4.Ctlcontrols.stop();            }        }        ///----静音按钮事件        private void muteBtn_Click(object sender, EventArgs e)        {            ///----------  1            if (changedPlayer == ChangePlayer.player1)            {                if (muteBtn.Text == "静 音")                {                    mediaPlayer1.settings.mute = true;                    muteBtn.Text = "声 音";                }                else if (muteBtn.Text == "声 音")                {                    mediaPlayer1.settings.mute = false;                }            }            ///----------2            if (changedPlayer == ChangePlayer.player2)            {                if (muteBtn.Text == "静 音")                {                    mediaPlayer2.settings.mute = true;                    muteBtn.Text = "声 音";                }                else if (muteBtn.Text == "声 音")                {                    mediaPlayer2.settings.mute = false;                }            }            ///----------3            if (changedPlayer == ChangePlayer.player3)            {                if (muteBtn.Text == "静 音")                {                    mediaPlayer3.settings.mute = true;                    muteBtn.Text = "声 音";                }                else if (muteBtn.Text == "声 音")                {                    mediaPlayer3.settings.mute = false;                }            }            ///----------4            if (changedPlayer == ChangePlayer.player4)            {                if (muteBtn.Text == "静 音")                {                    mediaPlayer4.settings.mute = true;                    muteBtn.Text = "声 音";                }                else if (muteBtn.Text == "声 音")                {                    mediaPlayer4.settings.mute = false;                }            }        }                ///-----音量条事件        private void volume_trackBar_Scroll(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                mediaPlayer1.settings.volume = volume_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player2)            {                mediaPlayer2.settings.volume = volume_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player3)            {                mediaPlayer3.settings.volume = volume_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player4)            {                mediaPlayer4.settings.volume = volume_trackBar.Value;            }        }        ///----进程条事件        private void process_trackBar_Scroll(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                mediaPlayer1.Ctlcontrols.currentPosition = process_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player2)            {                mediaPlayer2.Ctlcontrols.currentPosition = process_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player3)            {                mediaPlayer3.Ctlcontrols.currentPosition = process_trackBar.Value;            }            else if (changedPlayer == ChangePlayer.player4)            {                mediaPlayer4.Ctlcontrols.currentPosition = process_trackBar.Value;            }        }        ///----全屏按钮事件        private void fullScreenBtn_Click(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                if ( fullScreenBtn.Text == ("全 屏").ToString())                {                    mediaPlayer1.fullScreen = true;                }            }            if (changedPlayer == ChangePlayer.player2)            {                if (fullScreenBtn.Text == "全 屏".ToString())                {                    mediaPlayer2.fullScreen = true;                }            }            if (changedPlayer == ChangePlayer.player3)            {                if (fullScreenBtn.Text == "全 屏".ToString())                {                    mediaPlayer3.fullScreen = true;                }            }            if (changedPlayer == ChangePlayer.player4)            {                if (fullScreenBtn.Text == "全 屏".ToString())                {                    mediaPlayer4.fullScreen = true;                }            }        }        ///--菜单->文件->退出函数事件        private void 退出EToolStripMenuItem1_Click(object sender, EventArgs e)        {            Application.Exit();        }        ///----播放器2->打开事件        private void 打开OToolStripMenuItem1_Click(object sender, EventArgs e)        {            OpenFileDialog openFileDlg = new OpenFileDialog();            openFileDlg.Filter = "*.mp3|*.mp3|*.wma|*.wma|*.rmvb|*.rmvb|*.wmv|*.wmv|all|*.*";       ///---文件过滤器                                                                                                    ///            ///----判断在打开的文件对话框是否选择了打开按钮            if (openFileDlg.ShowDialog() == DialogResult.OK)               {                mediaPlayer2.URL = openFileDlg.FileName;        ///---播放器获取文件名并打开播放                mediaPlayer2.settings.volume = volume_trackBar.Value;       ///---将音量条的初始值赋给 当前媒体音量                media2_Timer.Start();       ///--计时器开始记时                ///---将按钮控件设置为非禁用                controlEnable(true);            }        }        ///----播放器3->打开事件        private void 打开OToolStripMenuItem2_Click(object sender, EventArgs e)        {            OpenFileDialog openFileDlg = new OpenFileDialog();            openFileDlg.Filter = "*.mp3|*.mp3|*.wma|*.wma|*.rmvb|*.rmvb|*.wmv|*.wmv|all|*.*";            if (openFileDlg.ShowDialog() == DialogResult.OK)            {                mediaPlayer3.URL = openFileDlg.FileName;                mediaPlayer3.settings.volume = volume_trackBar.Value;                media3_Timer.Start();                controlEnable(true);            }        }        ///----播放器4->打开事件        private void 打开OToolStripMenuItem3_Click(object sender, EventArgs e)        {            OpenFileDialog openFileDlg = new OpenFileDialog();            openFileDlg.Filter = "*.mp3|*.mp3|*.wma|*.wma|*.rmvb|*.rmvb|*.wmv|*.wmv|all|*.*";            if (openFileDlg.ShowDialog() == DialogResult.OK)            {                mediaPlayer4.URL = openFileDlg.FileName;                mediaPlayer4.settings.volume = volume_trackBar.Value;                media4_Timer.Start();                controlEnable(true);            }        }        private void timer_Tick(object sender, EventArgs e)        {            if (changedPlayer == ChangePlayer.player1)            {                if (process_trackBar.Value < process_trackBar.Maximum)                {                    process_trackBar.Maximum = (int)mediaPlayer1.currentMedia.duration;                    process_trackBar.Minimum = 0;                    process_trackBar.Value = (int)mediaPlayer1.Ctlcontrols.currentPosition;                }            }            if (changedPlayer == ChangePlayer.player2)            {                if (process_trackBar.Value < process_trackBar.Maximum)                {                    process_trackBar.Maximum = (int)mediaPlayer2.currentMedia.duration;                    process_trackBar.Minimum = 0;                    process_trackBar.Value = (int)mediaPlayer2.Ctlcontrols.currentPosition;                }            }            if (changedPlayer == ChangePlayer.player3)            {                if (process_trackBar.Value < process_trackBar.Maximum)                {                    process_trackBar.Maximum = (int)mediaPlayer3.currentMedia.duration;                    process_trackBar.Minimum = 0;                    process_trackBar.Value = (int)mediaPlayer3.Ctlcontrols.currentPosition;                }            }            if (changedPlayer == ChangePlayer.player4)            {                if (process_trackBar.Value < process_trackBar.Maximum)                {                    process_trackBar.Maximum = (int)mediaPlayer4.currentMedia.duration;                    process_trackBar.Minimum = 0;                    process_trackBar.Value = (int)mediaPlayer4.Ctlcontrols.currentPosition;                }            }        }        ///---播放器1的timer        private void media1_Timer_Tick(object sender, EventArgs e)        {            ///----显示曲名+时间            songName_label.Text = "曲名:" + mediaPlayer1.Ctlcontrols.currentItem.name;            //DateTime allTime = Convert.ToDateTime(mediaPlayer1.currentMedia.durationString);            //DateTime nowTime = Convert.ToDateTime(mediaPlayer1.Ctlcontrols.currentPositionString);            //string leftTime = (allTime - nowTime).ToString();            //time_label.Text = "剩余时间:" + string.Join(":", leftTime.Split(':'), 0, 2);        ///---获取当前播放文件时长            process_trackBar.Maximum = (int)mediaPlayer1.currentMedia.duration;       ///---将当前媒体播放长度赋给进度条                     process_trackBar.Value = (int)mediaPlayer1.Ctlcontrols.currentPosition;     ///--进度条跟随当前播放文件长度        }        ///----播放器2的timer         private void media2_Timer_Tick(object sender, EventArgs e)        {            ///----显示曲名            songName_label.Text = "曲名:" + mediaPlayer2.Ctlcontrols.currentItem.name;            //DateTime allTime = Convert.ToDateTime(mediaPlayer2.currentMedia.durationString);            //DateTime nowTime = Convert.ToDateTime(mediaPlayer2.Ctlcontrols.currentPositionString);            //string leftTime = (allTime - nowTime).ToString();            //time_label.Text = "剩余时间:" + string.Join(":", leftTime.Split(':'), 0, 2);        ///---获取当前播放文件时长            process_trackBar.Maximum = (int)mediaPlayer2.currentMedia.duration;                      process_trackBar.Value = (int)mediaPlayer2.Ctlcontrols.currentPosition;        }        private void media3_Timer_Tick(object sender, EventArgs e)        {            ///----显示曲名            songName_label.Text = "曲名:" + mediaPlayer3.Ctlcontrols.currentItem.name;            //DateTime allTime = Convert.ToDateTime(mediaPlayer3.currentMedia.durationString);            //DateTime nowTime = Convert.ToDateTime(mediaPlayer3.Ctlcontrols.currentPositionString);            //string leftTime = (allTime - nowTime).ToString();            //time_label.Text = "剩余时间:" + string.Join(":", leftTime.Split(':'), 0, 2);        ///---获取当前播放文件时长            process_trackBar.Maximum = (int)mediaPlayer3.currentMedia.duration;               process_trackBar.Value = (int)mediaPlayer3.Ctlcontrols.currentPosition;        }        private void media4_Timer_Tick(object sender, EventArgs e)        {            ///----显示曲名            songName_label.Text = "曲名:" + mediaPlayer4.Ctlcontrols.currentItem.name;            //DateTime allTime = Convert.ToDateTime(mediaPlayer4.currentMedia.durationString);            //DateTime nowTime = Convert.ToDateTime(mediaPlayer4.Ctlcontrols.currentPositionString);            //string leftTime = (allTime - nowTime).ToString();            //time_label.Text = "剩余时间:" + string.Join(":", leftTime.Split(':'), 0, 2);        ///---获取当前播放文件时长            process_trackBar.Maximum = (int)mediaPlayer4.currentMedia.duration;            process_trackBar.Value = (int)mediaPlayer4.Ctlcontrols.currentPosition;        }        private void lastBtn_Click(object sender, EventArgs e)        {            MessageBox.Show("敬请期待");        }        private void nextBtn_Click(object sender, EventArgs e)        {            MessageBox.Show("敬请期待");        }        private void playListBtn_Click(object sender, EventArgs e)        {                     ///MessageBox.Show("敬请期待");        }        ///-------窗口初始化控件状态        private void form_Load(object sender, EventArgs e)        {            controlEnable(false);        }        private void controlEnable(bool isEnable)        {            ///---遍历控件            foreach(Control control in splitContainer1.Panel2.Controls)            {                if (control is Button)                {                    ((Button)control).Enabled = isEnable;                }            }           ///---进程条 + 音量条 设置为禁用            process_trackBar.Enabled = isEnable;            volume_trackBar.Enabled = isEnable;            ///---上面将“添加“按钮设置为了禁用, 这里重新设置为 可用            addBtn.Enabled = true;        }    }}
这代码有点长,优化做的不够好。还望毋吐槽呀~~~~

该播放器,Windows media player 的点击事件涉及这个消息:

AxWindowsMediaPlayer.ClickEvent; 
笔者使用如下:

this.mediaPlayer1.ClickEvent += new AxWMPLib._WMPOCXEvents_ClickEventHandler(this.mediaPlayer1_ClickEvent);
说明:当点击当前播放屏,将触发WindowsMediaPlayer的ClickEvent消息。上面的this.mediaPlayer1.ClickEvent 是 对应点击事件的消息处理函数。可在上面的那段长代码段中找到对应的消息事件处理

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

源码,可以从这里直接抓取。这里的资源是放在CSDN的资源平台上的。

若上面的链接不可用, 可从这里直接抓取,此处的资源是放在微云上的。




0 0
原创粉丝点击