應(yīng)用場景
查找本地音樂并播放
知識要點
API函數(shù)—操作系統(tǒng)除了協(xié)調(diào)應(yīng)用程序的執(zhí)行、內(nèi)存分配、系統(tǒng)資源管理外,同時也是一個很大的服務(wù)中心,調(diào)用這個服務(wù)中心的各種服務(wù)(每一種服務(wù)是一個函數(shù)),可以幫助應(yīng)用程序達到開啟視窗、描繪圖形、使用周邊設(shè)備的目的,由于這些函數(shù)服務(wù)的對象是應(yīng)用程序(Application),所以稱之為Application Programming Interface,簡稱API函數(shù)。
1:API聲明調(diào)用動態(tài)鏈接庫'winmm.dll'可以實現(xiàn)文件的播放、暫停、關(guān)閉等功能
2:動態(tài)鏈接庫'winmm.dll'中包括了關(guān)于MP3文件播放的相關(guān)函數(shù),包括MP3的播放、暫停、繼續(xù)播放和關(guān)閉,以及判斷是否播放完畢的函數(shù)
3:winmm.dll文件 mcigetdeviceida函數(shù),可以用于判斷當前音樂文件是否播放完畢,在連續(xù)播放多個音樂文件時將會用到,play函數(shù)為播放,resume函數(shù)為暫停/繼續(xù)
3:byval關(guān)鍵詞表示將首選參數(shù)作為數(shù)值傳遞
Dim pathstr As String
Private Declare Function player Lib 'winmm.dll' Alias 'mciSendStringA' (ByVal lpstrcommand As String, ByVal lpstrreturnstring As String, ByVal ureturnlength As Long, ByVal hwndcallback As Long) As Long
Sub mp3(ByVal 路徑 As String) '查找文件過程
Dim dirs() As String, dir_count As Long, file_name As String, file_name_2 As String, j
If Right(路徑, 1) <> '\' Then 路徑 = 路徑 & '\' '如果路徑最后一位非'\'則追加一個'\'
file_name = Dir(路徑 & '*.*', vbDirectory) '獲取文件、目錄名稱
Do While Len(file_name) <> 0
'只要文件目錄名存在(目錄字符長度大于0)就循環(huán)下去
If Left$(file_name, 1) <> '.' Then '如果左邊第一字符為'.'
file_name_2 = 路徑 & file_name '獲取子目錄
If (GetAttr(file_name_2) And vbDirectory) = vbDirectory Then '如果是文件夾
dir_count = dir_count 1 '計算子目錄數(shù)量
ReDim Preserve dirs(1 To dir_count) As String '重新聲明數(shù)組的存儲空間
dirs(dir_count) = file_name_2 '將子目錄名稱寫入數(shù)組 dirs中
Else '如果不是文件加目錄
If file_name = '上海灘.mp3' Then pathstr = 路徑 & file_name: Exit Sub
End If
End If
file_name = Dir()
Loop
For j = 1 To dir_count '遍歷數(shù)組dirs,即將子目錄進行查找
mp3 dirs(j) '調(diào)用自身在執(zhí)行文件查找
Next j
End Sub
Sub Openmp3() '播放MP3
Call mp3('D:\') '執(zhí)行文件查找
'如果變量pathstr指向上海灘,那么開始播放
If Dir(pathstr) = '上海灘.mp3' Then player 'play''' & pathstr & '''', '', 0, 0
End Sub
Sub Resumemp3() '繼續(xù)播放(從暫停處繼續(xù)播放
'如果變量pathstr指向上海灘,那么繼續(xù)播放
If Dir(pathstr) = '上海灘.mp3' Then player 'resume''' & pathstr & '''', '', 0, 0
End Sub
'winmm.dll文件的文件名 winmm其實是windows multimedia api的縮寫,它是多媒體相關(guān)應(yīng)用程序接口,通過APi聲明,可以調(diào)用其內(nèi)置音樂播放函數(shù)。
'函數(shù)player的第一個參數(shù)為play時表示播放音樂文件,必須附帶一個音樂文件名,如果是停止播放,那么既可以在參數(shù)中使用文件名,表示中斷該音樂文件的播放,也可以
'使用參數(shù) colse all 表示關(guān)閉所有音樂。
'播放音樂的三種方式
' winmm.dll 文件中還有一個 mcigetdeviceida函數(shù),可以用于判斷當前音樂文件是否播放完畢,在連續(xù)播放多個音樂文件時將會用到
'也可以利用VBA 的WMPlayer.OCX 控件來播放音樂及視頻,并具有可視界面
'還可以使用動態(tài)鏈接庫 shell32.dell 中的 shellexecute函數(shù)播放音樂。shellexecute播放音樂的特點是調(diào)用系統(tǒng)中默認的播放器,即如果系統(tǒng)中只有 windows media player 時就
'調(diào)用它播放,而按照 千千靜聽 后就調(diào)用 千千靜聽播放,利用它調(diào)用郵件程序發(fā)送郵件時也是同樣的處理方式。
聯(lián)系客服