C#实现简单播放mp3的方法
本文实例讲述了C#实现简单播放mp3的方法。分享给大家供大家参考。具体实现方法如下:
///<summary>
///测试
///</summary>
classTestDemo
{
publicvoidTest()
{
clsMCIcm=newclsMCI();
cm.FileName="alarm.mp3";
cm.play();
}
}
///<summary>
///clsMci的摘要说明。
///</summary>
publicclassclsMCI
{
publicclsMCI()
{
}
//定义API函数使用的字符串变量
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]
privatestringName="";
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
privatestringdurLength="";
[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]
privatestringTemStr="";
intilong;
//定义播放状态枚举变量
publicenumState
{
mPlaying=1,
mPuase=2,
mStop=3
};
//结构变量
publicstructstructMCI
{
publicboolbMut;
publicintiDur;
publicintiPos;
publicintiVol;
publicintiBal;
publicstringiName;
publicStatestate;
};
publicstructMCImc=newstructMCI();
//取得播放文件属性
publicstringFileName
{
get
{
returnmc.iName;
}
set
{
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)+"aliasmedia";
ilong=APIClass.mciSendString("closeall",TemStr,TemStr.Length,0);
ilong=APIClass.mciSendString(Name,TemStr,TemStr.Length,0);
ilong=APIClass.mciSendString("setmediatimeformatmilliseconds",TemStr,TemStr.Length,0);
mc.state=State.mStop;
}
catch
{
}
}
}
//播放
publicvoidplay()
{
TemStr="";
TemStr=TemStr.PadLeft(127,Convert.ToChar(""));
APIClass.mciSendString("playmedia",TemStr,TemStr.Length,0);
mc.state=State.mPlaying;
}
//停止
publicvoidStopT()
{
TemStr="";
TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
ilong=APIClass.mciSendString("closemedia",TemStr,128,0);
ilong=APIClass.mciSendString("closeall",TemStr,128,0);
mc.state=State.mStop;
}
publicvoidPuase()
{
TemStr="";
TemStr=TemStr.PadLeft(128,Convert.ToChar(""));
ilong=APIClass.mciSendString("pausemedia",TemStr,TemStr.Length,0);
mc.state=State.mPuase;
}
privatestringGetCurrPath(stringname)
{
if(name.Length<1)return"";
name=name.Trim();
name=name.Substring(0,name.Length-1);
returnname;
}
//总时间
publicintDuration
{
get
{
durLength="";
durLength=durLength.PadLeft(128,Convert.ToChar(""));
APIClass.mciSendString("statusmedialength",durLength,durLength.Length,0);
durLength=durLength.Trim();
if(durLength=="")return0;
return(int)(Convert.ToDouble(durLength)/1000f);
}
}
//当前时间
publicintCurrentPosition
{
get
{
durLength="";
durLength=durLength.PadLeft(128,Convert.ToChar(""));
APIClass.mciSendString("statusmediaposition",durLength,durLength.Length,0);
mc.iPos=(int)(Convert.ToDouble(durLength)/1000f);
returnmc.iPos;
}
}
}
publicclassAPIClass
{
[DllImport("kernel32.dll",CharSet=CharSet.Auto)]
publicstaticexternintGetShortPathName(
stringlpszLongPath,
stringshortFile,
intcchBuffer
);
[DllImport("winmm.dll",EntryPoint="mciSendString",CharSet=CharSet.Auto)]
publicstaticexternintmciSendString(
stringlpstrCommand,
stringlpstrReturnString,
intuReturnLength,
inthwndCallback
);
}
希望本文所述对大家的C#程序设计有所帮助。