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#程序设计起到一定的借鉴与帮助作用。