c# 使用windows自带winmm.dll 播放音频
今天帮同事完成一个C#应用程式,用户需要在点击完成后发出指定声音。我们使用windows 自带的winmm.dll,这样就不用到处找库了,利有系统播放音频功能完成开发。
下面是完整的核心代码:
1 using System.Runtime.InteropServices; //DllImport的命名空间
2 [DllImport("winmm.dll")]privatestaticexternlong mciSendString(string lpstrCommand,StringBuilder lpstrReturnString,int uReturnLength,int hwndCallback);//C#调用windows native dll 的方法
3 const string audiofile = "ok.mp3";//音频文件路径 4 privatevoid btnplay_Click(object sender,EventArgs e){ 5 string CommandString="open "+"\""+ audiofile+"\""+" type MPEGVideo alias Mp3File";//注意,alias 后面的Mp3File是你取的别名,当然废话,英文意思就是别名。所以可以随便取,但一定要与后面的命令中的名字相同。注意“\”“,你可以不要,但最好还是保留,否则不小心忘了在"type"前留空格,整个命令就没有分隔符了,其实整个命令也可以不用“ type MPEGVideo”,但别忘了在alias前加入空格(如果有\"也可以不用)。 6 mciSendString(CommandString,null,0,0); 7 CommandString="set Mp3File time format ms"; 8 mciSendString(CommandString,null,0,0); 9 CommandString ="seek Mp3File to 0";//0 即音频开始,当然第一次本来就在开始,但如果你重复动作,不将播放位置放在0位,那么第一次播完就无法再播出声音了,因为系统已经播放文件到最后了。 10 mciSendString(CommandString,null,0,0); 11 CommandString="play Mp3File"; 12 mciSendString(CommandString,null,0,0); 13 }//
其实很简单,就是通过命令调用系统音频播放功能。以上代码也是可以播放wav等格式的,只需要去掉“type MPEGVideo”,这一段就行了。