以下为我写的Mp3操作类源代码:
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
/* ***********************************************************************************************************************************
* * 文件名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.10.8
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.10.8
*********************************************************************************************************************************** */
namespace Tool
{
/* *******************************************************************************************************************************
* * 类名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.7.15
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.7.15
******************************************************************************************************************************* */
public class Mp3Player
{
#region - 属性 -
[DllImport( " winmm.dll " )]
static extern Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
/// <summary>
/// 临时音乐文件存放处
/// </summary>
private string m_musicPath = "" ;
/// <summary>
/// 父窗体句柄
/// </summary>
private IntPtr m_Handle;
#endregion
#region - 构造函数 -
/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="music"> 嵌入的音乐文件 </param>
/// <param name="path"> 临时音乐文件保存路径 </param>
/// <param name="Handle"> 父窗体句柄 </param>
public Mp3Player(Byte[] music, string path, IntPtr Handle)
{
try
{
m_Handle = Handle;
m_musicPath = Path.Combine(path, " temp.mp3 " );
FileStream fs = new FileStream(m_musicPath, FileMode.Create);
fs.Write(music, 0 , music.Length);
fs.Close();
}
catch (Exception)
{
}
}
/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="musicPath"> 要播放的mp3文件路径 </param>
/// <param name="Handle"> 父窗体句柄 </param>
public Mp3Player( string musicPath, IntPtr Handle)
{
m_musicPath = musicPath;
m_Handle = Handle;
}
public Mp3Player(Byte[] music, IntPtr Handle):
this (music, @" C:\Windows\ " , Handle)
{
}
#endregion
#region - 播放音乐 -
public void Open( string path)
{
if (path != "" )
{
try
{
mciSendString( " open " + path + " alias media " , null , 0 , m_Handle);
mciSendString( " play media " , null , 0 , m_Handle);
}
catch (Exception)
{
}
}
}
public void Open()
{
Open(m_musicPath);
}
#endregion
#region - 停止音乐播放 -
void CloseMedia()
{
try
{
mciSendString( " close all " , null , 0 , m_Handle);
}
catch (Exception)
{
}
}
#endregion
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
/* ***********************************************************************************************************************************
* * 文件名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.10.8
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.10.8
*********************************************************************************************************************************** */
namespace Tool
{
/* *******************************************************************************************************************************
* * 类名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.7.15
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.7.15
******************************************************************************************************************************* */
public class Mp3Player
{
#region - 属性 -
[DllImport( " winmm.dll " )]
static extern Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
/// <summary>
/// 临时音乐文件存放处
/// </summary>
private string m_musicPath = "" ;
/// <summary>
/// 父窗体句柄
/// </summary>
private IntPtr m_Handle;
#endregion
#region - 构造函数 -
/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="music"> 嵌入的音乐文件 </param>
/// <param name="path"> 临时音乐文件保存路径 </param>
/// <param name="Handle"> 父窗体句柄 </param>
public Mp3Player(Byte[] music, string path, IntPtr Handle)
{
try
{
m_Handle = Handle;
m_musicPath = Path.Combine(path, " temp.mp3 " );
FileStream fs = new FileStream(m_musicPath, FileMode.Create);
fs.Write(music, 0 , music.Length);
fs.Close();
}
catch (Exception)
{
}
}
/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="musicPath"> 要播放的mp3文件路径 </param>
/// <param name="Handle"> 父窗体句柄 </param>
public Mp3Player( string musicPath, IntPtr Handle)
{
m_musicPath = musicPath;
m_Handle = Handle;
}
public Mp3Player(Byte[] music, IntPtr Handle):
this (music, @" C:\Windows\ " , Handle)
{
}
#endregion
#region - 播放音乐 -
public void Open( string path)
{
if (path != "" )
{
try
{
mciSendString( " open " + path + " alias media " , null , 0 , m_Handle);
mciSendString( " play media " , null , 0 , m_Handle);
}
catch (Exception)
{
}
}
}
public void Open()
{
Open(m_musicPath);
}
#endregion
#region - 停止音乐播放 -
void CloseMedia()
{
try
{
mciSendString( " close all " , null , 0 , m_Handle);
}
catch (Exception)
{
}
}
#endregion
}
}
1.将MP3文件导入到VS中,并且设置为嵌入的资源:
MP3文件
2.导入到资源中,C#中视MP3为文件类型,以Byte[]形式存储:
3.将该MP3文件设置为嵌入的资源:
4.最后创建一个新的窗体工程,在Load事件中调用Mp3类的方法即可播放音乐:
private
void
FormMain_Load(
object
sender, EventArgs e)
{
{
//
加载音乐
Mp3Player mp3
=
new
Mp3Player(Properties.Resources.music, Handle);
// 音乐开始播放
// 音乐开始播放
mp3.Open();
}
}
本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/03/28/1698682.html,如需转载请自行联系原作者