小菜学习Winform(二)WMPLib实现音乐播放器
来源:博客园
前言 现在网上有很多的音乐播放器,但好像都不是.net平台做的,在.net中实现音乐文件的播放功能很简单,下面就简单实现下。 SoundPlayer类 在.net提供了音乐文件的类:SoundPlayer,但是只支持.wav格式,我们用的时候一般是播放系统文件,比如一些提示声音等。代码很简单: 1
SoundPlayer player = new SoundPlayer(); 2
player.SoundLocation = fileP//filePath文件的物理路径 3
player.Play();
使用这个类我们做个小程序,如下: WMP组件 上面的小程序有几个问题:不支持暂停,进度显示,文件格式限制等,因为SoundPlayer就是来播放系统文件的,不能要求它那么全面。因为windows系统自带播放器windows media player,我们可以用使用其自带的组件来实现上面的要求,做起来也很简单。 先引用Windows Media Player组件,然后就像拖控件一样用就行了。效果如图: 代码实现起来很简单,播放,暂停,停止代码如下: 1
wmp.Ctlcontrols.play();//播放 2
wmp.Ctlcontrols.pause();//暂停 3
wmp.Ctlcontrols.stop();//停止 完整代码:
1 using S
2 using System.Collections.G
3 using ponentM
4 using System.D
5 using System.D
6 using System.L
7 using System.T
8 using System.Windows.F
9 10 using WMPL 11 using System.M 12 using System.IO; 13 using System.T 14 15 namespace 音乐播放器 16 { 17
public partial class Form2 : Form 18
public int index = 1; 20
public int listI 21
SoundPlayer player = new SoundPlayer(); 22
Dictionary&string, string& dic = new Dictionary&string, string&(); 23
IWMPM 24
public Form2() 25
InitializeComponent(); 27
} 28 29
private void Form2_Load(object sender, EventArgs e) 30
} 33 34
/// &summary& 35
/// 导入文件 36
/// &/summary& 37
private void tsmiLoading_Click(object sender, EventArgs e) 38
string fileName, fileExtension, fileSize, 40
FileInfo fi = null; 41
ListViewItem lvi = null; 42 43
openFileDialog1.Multiselect = true; 44
openFileDialog1.Filter = "mp3文件(*.mp3)|*.mp3|wav文件(*.wav)|*.wav|wma文件(*.wma)|*.wma"; 45
if (openFileDialog1.ShowDialog() == DialogResult.OK) 46
foreach (string filePath in openFileDialog1.FileNames) 48
fi = new FileInfo(filePath); 50
temp = filePath.Remove(filePath.LastIndexOf('.')); 51
fileName = temp.Remove(0, temp.LastIndexOf('\\') + 1); 52
fileExtension = filePath.Remove(0, filePath.LastIndexOf('.')); 53
fileSize = (fi.Length / 1024).ToString() + "KB"; 54 55
lvi = new ListViewItem(); 56
lvi.Text = index++.ToString(); 57
lvi.SubItems.AddRange(new string[] { fileName, fileExtension, fileSize, filePath }); 58 59
if (lvDetail.Items.Count & 0) 60
if (!dic.ContainsKey(filePath)) 62
lvDetail.Items.Add(lvi); 64
dic.Add(filePath, fileName); 65
//添加到播放列表 66
media = wmp.newMedia(filePath); 67
wmp.currentPlaylist.insertItem(listIndex++, media); 68
else 70
index--; 72
MessageBox.Show("文件已存在!"); 73
else 76
lvDetail.Items.Add(lvi); 78
dic.Add(filePath, fileName); 79
//添加到播放列表 80
media = wmp.newMedia(filePath); 81
wmp.currentPlaylist.insertItem(listIndex++, media); 82
} 86 87
/// &summary& 88
/// 清除列表 89
/// &/summary& 90
private void tsmiClear_Click(object sender, EventArgs e) 91
lvDetail.Items.Clear(); 93
} 94 95
/// &summary& 96
/// 播放 97
/// &/summary& 98
private void tsmiPlayer_Click(object sender, EventArgs e) 99
wmp.Ctlcontrols.play(); 101
} 102 103
/// &summary& 104
/// 暂停 105
/// &/summary& 106
private void tsmiWaiting_Click(object sender, EventArgs e) 107
wmp.Ctlcontrols.pause(); 109
} 110 111
/// &summary& 112
/// 停止 113
/// &/summary& 114
private void tsmiStop_Click(object sender, EventArgs e) 115
wmp.Ctlcontrols.stop(); 117
} 118 119
/// &summary& 120
/// 退出 121
/// &/summary& 122
private void tsmiExit_Click(object sender, EventArgs e) 123
Application.Exit(); 125
} 126 127
/// &summary& 128
/// 双击某项播放 129
/// &/summary& 130
private void lvDetail_DoubleClick(object sender, EventArgs e) 131
if (lvDetail.SelectedItems.Count & 0) 133
wmp.currentMedia = wmp.currentPlaylist.Item[int.Parse(lvDetail.SelectedItems[0].Text) - 1]; 135
} 138 } View Code 程序下载: 附录:
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动}