1.用Win32 API PlaySound
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)10年經(jīng)驗成就非凡,專業(yè)從事成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,成都網(wǎng)頁設(shè)計,成都網(wǎng)頁制作,軟文發(fā)布平臺,廣告投放平臺等。10年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:028-86922220,我們期待您的來電!
PlaySound位于"winmm.dll"中,可以根據(jù)輸入?yún)?shù)的不同,播放WAV類型的音樂。在VB.NET中調(diào)用跟VB6中差不多:
先聲明:
Private Declare Auto Function PlaySound Lib "winmm.dll" (ByVal lpszSoundName As String, ByVal hModule As Integer, ByVal dwFlags As Integer) As Integer
Const SND_FILENAME As Integer = H20000
Const SND_ALIAS As Integer = H10000
Const SND_SYNC As Integer = H0
具體還有很多常量,不一一列舉,下面是播放一個wav文件的例子
Dim mstrfileName As String = "c:\eagle2.wav"
PlaySound(mstrfileName, 0, SND_FILENAME)
注意上面的播放是非同步的,就是說它并不會播放完畢才結(jié)束。如果把上面的代碼寫在一個Button.Click的事件處理程序中,第二次點擊的時候它會打斷第一次的播放,重新開始。
當(dāng)然我們也可以調(diào)用系統(tǒng)的聲音:
PlaySound("SystemStart", 0, SND_ALIAS Or SND_SYNC)
' 以同步的方式調(diào)用系統(tǒng)啟動時候的聲音。
2. 調(diào)用媒體播放器控件
VB.NET中并沒有提供媒體播放器的.NET組件,沒辦法我們還是調(diào)用以前Com組件Windows Media Player。當(dāng)然除了聲音外,還可以播放視頻文件。
首先把媒體播放器控件加到工具欄中,調(diào)用還是簡單的寫一下吧:)
Private Sub playMediaFile(ByVal mediaFileName As String)
With MediaPlayer1
.Stop()
.FileName = "c:\mp3\愛不愛我.mp3"
.Play()
End With
End Sub
用API mciSendString可以同時播放多個聲音,需要提供路徑。
資源文件很麻煩,要用反射讀取出來,再用IO寫到磁盤路徑。
你是做游戲把?軟糖建議是不要使用資源文件,而使用本地文件。
用個BGM文件夾保存背景音樂,用SE文件夾保存音效(學(xué)習(xí)RPG Maker的做法)
API代碼奉上,具體實現(xiàn)模塊字?jǐn)?shù)超過最大值,請下載附件
Imports?System.Text
'''?summary
'''?可播放MPEG,AVI,WAV,MP3,MID,WMA等格式的音頻文件,*不支持OGG
'''?/summary
Public?Class?音頻設(shè)備
'聲明API函數(shù):?mciSendString
System.Runtime.InteropServices.DllImport("winmm.dll",?EntryPoint:="mciSendString")
Public?Shared?Function?mciSendString(strCommand?As?String,
strReturn?As?StringBuilder,
iReturnLength?As?Integer,
hwndCallback?As?Integer)?As?Integer
End?Function
'聲明API函數(shù):?mciGetErrorString
System.Runtime.InteropServices.DllImport("winmm.dll",?EntryPoint:="mciSendString")
Public?Shared?Function?mciGetErrorString(errCode?As?Integer,
errMsg?As?StringBuilder,
buflen?As?Integer)?As?Integer
調(diào)用方法
Public?Class?Form1
Dim?音頻設(shè)備?As?New?音頻設(shè)備
Private?Sub?Button1_Click(sender?As?Object,?e?As?EventArgs)?Handles?Button1.Click
Dim?路徑?=?"F:\音樂文件名.mp3"
音頻設(shè)備.打開("自定義名稱1",?路徑)
音頻設(shè)備.播放("自定義名稱1")
'音頻設(shè)備.暫停("自定義名稱1")
'音頻設(shè)備.繼續(xù)("自定義名稱1")
'音頻設(shè)備.關(guān)閉("自定義名稱1")
End?Sub
End?Class
如滿意,請采納,還有不懂的請追問,謝謝。
在.NET里,沒有托管的音樂播放器,用API只能播放WAV格式,對于MP3等形式的音頻文件,就要依賴于其他控件了,常用的就是
MediaPlayer。使用方法:
在工具箱上點右鍵,選擇“選擇項目(Choose
Items)”,切到COM選項卡,找到
Windows
Media
Player,
勾選,確定
在t工具箱上,把剛才加入的MediaPlayer控件,拖放到窗體上
代碼:
WindowsMediaPlayer1.URL
=
"mp3文件路徑,支持網(wǎng)絡(luò)路徑"
WindowsMediaPlayer1.Ctlcontrols.play
基本就OK了,至于其他的操作諸如下一曲上一曲暫停停止,直接看
WindowsMediaPlayer1.Ctlcontrols.
里面的方法吧。
不明白你為什么要二進制讀取聲音文件,VB可以直接調(diào)用API播放聲音文件,不需要你二進制來讀取聲音文件的。
Private
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA"
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub PlayWavFile(strFileName As String, PlayCount As Long, JianGe As Long)
'strFileName 要播放的文件名(帶路徑)
'playCount 播放的次數(shù)
'JianGe 多次播放時,每次的時間間隔
If Len(Dir(strFileName)) = 0 Then Exit Sub
If PlayCount = 0 Then Exit Sub
If JianGe 1000 Then JianGe = 1000
DoEvents
sndPlaySound strFileName, 16 + 1
Sleep JianGe
Call PlayWavFile(strFileName, PlayCount - 1, JianGe)
End Sub
Private Sub Form_Click()
PlayWavFile "C:\aaa.wav", 1, 1000 '參數(shù):播放文件,播放次數(shù),播放間隔
End Sub
方法一:調(diào)用系統(tǒng)DLL(這個有點不完善,也就是播放聲音時窗體無法控制,效果相當(dāng)于Enabled=true,但音頻播放完畢后就沒事了)
Private?Declare?Function?sndPlaySound?Lib?"Winmm.dll"?Alias?"sndPlaySoundA"?(ByVal?lpszSoundName?As?String,?ByVal?uFlags?As?Long)?As?Long
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
Dim?SoundFile?As?String,?Result?As?Long
SoundFile?=?"D:\KuGou\Pianoboy?-?第105天.wav"?'此處為路徑
Result?=?sndPlaySound(SoundFile,?0)
End?Sub
方法二:使用WindowsMediaPlayer(WindowsMediaPlayer1的可見為False)
先添加一個windowsmediaplayer控件(工具箱里沒有,需要手動添加)
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
WindowsMediaPlayer1.visible=False
Me.WindowsMediaPlayer1.URL?=?"D:\KuGou\Pianoboy?-?第105天.mp3"
End?Sub
上面的都是點擊button1(按鈕1)后播放聲音,若是鼠標(biāo)移動到某控件上發(fā)出聲音的話改一下觸發(fā)事件就OK了。
添加一個 WindowsMediaPlayer 控件 一句代碼即可播放音樂 AxWindowsMediaPlayer1.URL = "音樂地址"
文章標(biāo)題:vb.net播放音頻,vb播放聲音
網(wǎng)頁地址:http://jinyejixie.com/article26/dsececg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、微信小程序、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)