在深入本文之前,建议先了解Windows Media Player类或COM引用的相关知识。本文将介绍如何使用C#和Windows Media Player COM引用在Windows表单应用程序中加载和定制歌曲。
Windows Media Player是一个强大的多媒体播放器,它提供了丰富的API和COM接口,允许开发者在应用程序中集成媒体播放功能。本文将展示如何通过C#编程语言,利用Windows Media Player的COM引用来实现歌曲的加载、定制播放列表等功能。
在开始之前,首先需要初始化一个表单(Form1),并在该表单加载时创建一个Windows Media Player的实例。
private void Form1_Load(object sender, EventArgs e)
{
this.player = new Media_Player_Registry.MediaPlayer();
// 设置媒体播放器变量
this.player.Volume = this.Volume.Value;
}
在上述代码中,调用了Media_Player_Registry.MediaPlayer类,该类负责管理与Windows Media Player的交互。
在MediaPlayer类中,定义了一些有用的变量:
Song类是一个简单的存储歌曲信息的类,包括:
虽然不会在这里描述所有创建的方法,但以下是一些重要的方法:
BaseName方法用于获取文件的基本名称。例如,给定路径"C:\users\yahav\Music\song name.mp3",该方法将返回"song name"。
public string BaseName()
{
string basename = "";
string tmp_basename = "";
for (int i = 0; i < this.song_name.Length; i++)
{
tmp_basename = this.song_name.Substring(i);
if (tmp_basename.IndexOf(@"\") == -1)
{
basename += this.song_name[i];
}
}
return basename;
}
Volume属性用于设置和获取歌曲的音量。Windows Media Player的音量参数范围是从-100到-1000,而滚动条设置为1到10。因此,使用(volume * -100)来进行转换。
public int Volume
{
get { return this.volume; }
set
{
if (value < 0) { this.volume = 0; }
else if (value > 10) { this.volume = 10; }
else { this.volume = value; }
// 设置Windows Media Player的音量
switch (this.volume)
{
case 0: this.volume = 10; break;
case 1: this.volume = 9; break;
// ... 更多的case
case 10: this.volume = 0; break;
}
this.volume = this.volume * -100;
this.player.Volume = this.volume;
}
}
LoadSong方法用于加载歌曲。它首先显示一个.NET打开文件对话框,让用户选择歌曲,然后调用LoadSong方法加载歌曲。
public void LoadSong()
{
LoadDialog.Reset();
LoadDialog.CheckFileExists = true;
LoadDialog.CheckPathExists = true;
LoadDialog.AddExtension = true;
LoadDialog.DefaultExt = ".mp3";
LoadDialog.Title = "Select mp3 file";
LoadDialog.Filter = "MP3 files (*.mp3)|*.*";
LoadDialog.ShowDialog();
if (this.LoadDialog.FileName == "" || this.LoadDialog.FileName == null)
{
return;
}
this.LoadSong(LoadDialog.FileName);
// 设置到列表
TreeNode t = new TreeNode();
t.Name = LoadDialog.FileName;
t.Checked = true;
t.NodeFont = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
t.Text = this.player.Active_BaseSongName();
this.SongList.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { t });
}
System.Windows.Forms.MessageBox.Show(this.player.Volume);