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
- C#学习之路之使用windows media player 实例
- C#中Windows Media Player控件使用实例|方法
- C#窗体程序Windows Media Player组件之播放功能
- C#使用Windows Media Player播放音频文件
- C# 调用WINDOWS Media player
- C# Windows Media Player操作
- C#中使用Windows Media Player播放音乐的方法
- Windows Media Player的使用
- 【VC学习】VC2010 Windows Media Player控件的使用技巧
- Windows Mobile多媒体开发总结之Media Player Plugins
- Windows Mobile多媒体开发总结之Media Player Plugins
- Android多媒体之Media Player
- kantaris media player (坎塔雷斯媒体播放器)免费使用体验之旅
- 如何使用 windows media player 控件
- MFC使用Windows media player播放声音文件
- windows media player控件使用心得
- 使用P/Invoke、C#与Windows Media Player互操作(一)
- Windows Media Player
- 安卓程序上传文件到java服务器
- Linux操作系统上安装Mysql数据库
- 第三次作业
- CodeForces - 514A Chewbaсca and Number
- 女 大三,抱金砖~呵~
- C#学习之路之使用windows media player 实例
- 对指定URL获取其titile
- CodeForces - 513A Game
- 求2个或3个正整数的最大数,用带有默认参数的函数实现
- Unity--光线投射碰撞Physics.Raycast和Physics.RaycastAll
- LeetCode - Longest Consecutive Sequence
- Leetcode: Binary Search Tree Iterator
- 【分析】dalvik虚拟机启动过程(一)
- HDU 5195 DZY Loves Topological Sorting(线段树)