今天幫同事完成一個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”,這一段就行了。