C#实现通过winmm.dll控制声音播放的方法
本文以实例介绍了C#如何通过winmm.dll来播放声音,主要实现步骤如下:
1.首先导入如下两个函数:
///<summary>
///向媒体控制接口发送控制命令
///</summary>
///<paramname="lpszCommand">命令,参见
///http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572(v=vs.85).aspx</param>
///<paramname="lpszReturnString">命令返回的信息,如果没有需要返回的信息可以为null</param>
///<paramname="cchReturn">指定返回信息的字符串大小</param>
///<paramname="hwndCallback">回调句柄,如果命令参数中没有指定notify标识,可以为newIntPtr(0)</param>
///<returns>返回命令执行状态的错误代码</returns>
[DllImport("winmm.dll")]
staticexternInt32mciSendString(stringlpszCommand,StringBuilderreturnString,intbufferSize,IntPtrhwndCallback);
///<summary>
///返回对执行状态错误代码的描述
///</summary>
///<paramname="errorCode">mciSendCommand或者mciSendString返回的错误代码</param>
///<paramname="errorText">对错误代码的描述字符串</param>
///<paramname="errorTextSize">指定字符串的大小</param>
///<returns>如果ERRORCode未知,返回false</returns>
[DllImport("winmm.dll")]
staticexternboolmciGetErrorString(Int32errorCode,StringBuildererrorText,Int32errorTextSize);
2.示例代码如下:
interror=mciSendString("openC:\\Users\\Angel\\Desktop\\123.wavaliasmyDivece",null,0,newIntPtr(0));
if(error==0)
{
mciSendString("playmyDivece",null,0,newIntPtr(0));//播放
}
else
{
StringBuildererrorText=newStringBuilder();
mciGetErrorString(error,errorText,50);
MessageBox.Show(errorText.ToString());
}
3.可以通过以下语句进行播放控制:
mciSendString("playmyDivece",null,0,newIntPtr(0));//播放
mciSendString("pausemyDivece",null,0,newIntPtr(0));//暂停
mciSendString("stopmyDivece",null,0,newIntPtr(0));//停止
mciSendString("closemyDivece",null,0,newIntPtr(0));//关闭
感兴趣的读者可以动手测试一下本文实例,相信会对大家的C#程序设计起到一定的借鉴与帮助作用。