您的位置:首页 > 编程语言 > C#

c# 播放mp3

2010-03-29 20:32 337 查看
这个类可以直接播放mp3文件

使用方式:

clsMCI cm = new clsMCI();
cm.FileName = "别看我只是一只羊.mp3";
cm.play();

类代码

using System;

using System.Runtime.InteropServices;

using System.Text;

using System.IO ;

using System.Windows.Forms;

namespace WindowsApplication7

{

/// <summary>

/// clsMci 的摘要说明。

/// </summary>

 public class clsMCI

{

public clsMCI()

{

//

// TODO: 在此处添加构造函数逻辑

//

  }

//定义API函数使用的字符串变量

  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]

private string Name = "" ;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]

private string durLength = "" ;

[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]

private string TemStr ="";

int ilong;

//定义播放状态枚举变量

  public enum State

{

mPlaying = 1,

mPuase = 2,

mStop = 3

};

//结构变量

  public struct structMCI

{

public bool bMut;

public int iDur;

public int iPos;

public int iVol;

public int iBal;

public string iName;

public State state;

};

public structMCI mc =new structMCI() ;

//取得播放文件属性

  public string FileName

{

get

{

return mc.iName;

}

set

{

//ASCIIEncoding asc = new ASCIIEncoding();

    try

{

TemStr ="";

TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));

Name = Name.PadLeft(260,Convert.ToChar(" ")) ;

mc.iName = value;

ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length);

Name = GetCurrPath(Name);

//Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";

     Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";

ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0);

ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0);

ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0);

mc.state = State.mStop;

}

catch

{

}

}

}

//播放

  public void play()

{

TemStr = "";

TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));

APIClass.mciSendString("play media", TemStr, TemStr.Length , 0);

mc.state = State.mPlaying ;

}

//停止

  public void StopT()

{

TemStr = "";

TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));

ilong = APIClass.mciSendString("close media", TemStr, 128, 0);

ilong = APIClass.mciSendString("close all", TemStr, 128, 0);

mc.state = State.mStop ;

}

public void Puase()

{

TemStr = "";

TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));

ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);

mc.state = State.mPuase ;

}

private string GetCurrPath(string name)

{

if(name.Length <1) return "";

name = name.Trim();

name = name.Substring(0,name.Length-1);

return name;

}

//总时间

  public int Duration

{

get

{

durLength = "";

durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;

APIClass.mciSendString("status media length", durLength, durLength.Length, 0);

durLength = durLength.Trim();

if(durLength == "") return 0;

return (int)(Convert.ToDouble(durLength) / 1000f);

}

}

//当前时间

  public int CurrentPosition

{

get

{

durLength = "";

durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;

APIClass.mciSendString("status media position", durLength, durLength.Length, 0);

mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);

return mc.iPos;

}

}

}

public class APIClass

{

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]

public static extern int GetShortPathName (

string lpszLongPath,

string shortFile,

int cchBuffer

);

[DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]

public static extern int mciSendString (

string lpstrCommand,

string lpstrReturnString,

int uReturnLength,

int hwndCallback

);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: