如何用VB程序來播放WAV文件
發(fā)布時(shí)間:2008-10-17 閱讀數(shù): 次 來源:網(wǎng)樂原科技
Wednesday, September 24 2003 1:24 PM 當(dāng)一定事件完成時(shí),程序發(fā)出特定的信號則可以增加程序的用戶界面特性,比如在下載完成或者選擇一個(gè)命令的時(shí)候。使用一個(gè)多媒體功能,通過一個(gè)VB程序來運(yùn)行WAV文件是一件輕而易舉的事情。然而,系統(tǒng)必須為這一操作而安裝一個(gè)聲卡。
你所需要的API函數(shù)稱為PlaySound,以下為該函數(shù)的聲明:
Public Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVallpszName As String, _
ByValhModule As Long, ByValdwFlags As Long) _
As Long
在這一函數(shù)中,第一個(gè)變量是名稱,包括運(yùn)行的Wave文件的路徑。第二個(gè)變量在運(yùn)行文件時(shí)通常不使用,所以你可以將它賦值為zero。最后一個(gè)變量包含控制函數(shù)如何工作的標(biāo)記。
為了當(dāng)前的需要,必須需要兩個(gè)標(biāo)記。它們是:
SND_ASYNC (value= 1):以異步方式運(yùn)行,這意味著當(dāng)播放聲音時(shí)函數(shù)在運(yùn)行。
SND_FILENAME (value = &H20000):第一個(gè)變量為一個(gè)文件名。
所以,以下代碼播放了DingDong.wav文件中的聲音:
PlaySound "dingdong.wav", CLng(0), _
SND_ASYNC Or SND_FILENAME
當(dāng)運(yùn)行在一個(gè)程序中運(yùn)行音頻文件時(shí),還有其他兩點(diǎn)值得注意。第一,你必須確保一個(gè)特定的音頻文件存在,否則會產(chǎn)生錯(cuò)誤。這一過程可以用以下一個(gè)簡單的函數(shù)來完成:
Public Function FileExists(FullFileName) As Boolean
' Passed a filename (with path) returns
' True if the file exists, False if not.
Dim s
s = dir(FullFileName)
If s = "" Then
FileExists = False
Else
FileExists = True
End If
End Function
第二,程序必須具有為用戶提供關(guān)閉聲音的選擇設(shè)置。這一過程可以通過使用一個(gè)比如gProgramSoundsEnabled的全局布爾變量來實(shí)現(xiàn)。
我的方法是在一個(gè)函數(shù)中同時(shí)處理這些需要,如下所示。(以下代碼假設(shè)音頻文件已經(jīng)存放在程序文件中)
Private Sub PlaySoundX(filename As String)
' If sound is enabled and filename exists,
' play the specified sound.
filename = App.path & "\" & filename
If FileExists(filename) And gProgramSoundsEnabled Then
PlaySound filename, CLng(0), SND_ASYNC Or SND_FILENAME
End If
End Sub
正確使用這些函數(shù),程序就可以播放任何Wave文件,如下所示:
PlaySoundX "DingDong.wav"
從VB程序播放音頻文件的其他方法包括窗體上的多媒體控制。當(dāng)你不需要這些控制特性時(shí),以上講述的技術(shù)已經(jīng)足夠,并且很容易掌握。(ZDNET CHINA)