VB.NET聲音播放三點(diǎn)要素概述
自從VB.NET推出后,其功能特點(diǎn)極大的吸引了廣發(fā)開發(fā)人員的眼球。我們可以在實(shí)際應(yīng)用中去發(fā)現(xiàn)其的好處。下面就先來從VB.NET聲音播放來體驗(yàn)期功能的強(qiáng)大。由VB6升級(jí)為.NET后,有些人不清楚聲音的處理,比如程序出錯(cuò)的時(shí)候,自定義一個(gè)聲音播放,或者程序的背景音樂、包括游戲音樂等等。下面介紹幾種在VB.NET中計(jì)較簡(jiǎn)單可以實(shí)現(xiàn)的方案:#t#
VB.NET聲音播放1. Beep
最簡(jiǎn)單的一種方法,通過計(jì)算機(jī)的揚(yáng)聲器發(fā)出聲響, 聲響的音高與持續(xù)時(shí)間取決于硬件和系統(tǒng)軟件,從而隨計(jì)算機(jī)不同而不同。
Beepg跟Msgbox等方法位于Microsoft.VisualBasic.Interaction 中,一般默認(rèn)系統(tǒng)會(huì)自動(dòng)加載。調(diào)用很簡(jiǎn)單,看下面的例子。
- Dim I As IntegerFor I = 1 To 100
- ' Loop 100 times. Beep()
- ' Sound a tone.Next I
VB.NET聲音播放2. 用Win32 API PlaySound
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 =
&H20000Const- SND_ALIAS As Integer = &H10000
- Const SND_SYNC As Integer = &H0
具體還有很多常量,不一一列舉,下面是播放一個(gè)wav文件的例子
- Dim mstrfileName As
String = "c:\eagle2.wav"- PlaySound(mstrfileName,
0, SND_FILENAME)
注意上面的播放是非同步的,就是說它并不會(huì)播放完畢才結(jié)束。如果把上面的代碼寫在一個(gè)Button.Click的事件處理程序中,第二次點(diǎn)擊的時(shí)候它會(huì)打斷第一次的播放,重新開始。
當(dāng)然我們也可以調(diào)用系統(tǒng)的聲音:
- PlaySound("SystemStart",
0, SND_ALIAS Or SND_SYNC)- ' 以同步的方式調(diào)用系統(tǒng)
啟動(dòng)時(shí)候的聲音
VB.NET聲音播放3. 調(diào)用媒體播放器控件
VB.NET中并沒有提供媒體播放器的.NET組件,沒辦法我們還是調(diào)用以前Com組件Windows Media Player。當(dāng)然除了聲音外,還可以播放視頻文件。
首先把媒體播放器控件加到工具欄中,調(diào)用還是簡(jiǎn)單的寫一下吧:)
- Private Sub playMediaFile
(ByVal mediaFileName As String)- With MediaPlayer1
- .Stop()
- .FileName = "c:\mp3\愛不愛我.mp3"
- .Play()
- End With
- End Sub
總結(jié):雖然VB.NET比VB6改變了很多,包括真正的OOP,多線程等等,但是總歸還是跟VB有很多聯(lián)系,建議大家碰到難于解決的問題的時(shí)候,試一下以前的處理方式,一般都能奏效