(注:本文以2000年七月的MSDN解釋為準(zhǔn))
MCI Command String是多媒體設(shè)備的程序接口。通過(guò)它,我們可以打開(kāi)一個(gè)多媒體文件,例如mp3,VCD文件,Mpeg4格式的文件等等,并對(duì)它進(jìn)行播放,暫停,關(guān)閉等操作。現(xiàn)在小弟有幸給大家介紹一下MCI Command String的使用方法。
MCI Command String是通過(guò)mciExecute或mciSendString兩個(gè)函數(shù)執(zhí)行的。這兩個(gè)函數(shù)的聲明如下:
Private Declare Function mciExecute Lib "winmm.dll" Alias "mciExecute" (ByVal lpstrCommand As String) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
這兩個(gè)函數(shù)都有一個(gè)叫l(wèi)pstrCommand的參數(shù), 這個(gè)參數(shù)就是我們今天要介紹的MCI Command String。其中函數(shù)mciSendString還有三個(gè)參數(shù),lpstrReturnString是一個(gè)字符串,它用來(lái)接收mciSendString函數(shù)返回的信息(例如,我們?cè)趌pstrCommand中的ming令是讓函數(shù)返回打開(kāi)的文件的設(shè)備類型,那么函數(shù)就把設(shè)備類型的信息保存在這個(gè)參數(shù)中。);uReturnLength參數(shù)用來(lái)指定參數(shù)lpstrReturnString的長(zhǎng)度;hwndCallback是接收“wait”、“notify”消息的窗口句柄,在Visual Basic中調(diào)用時(shí)該參數(shù)設(shè)為0即可。
如果ming令執(zhí)行出錯(cuò),函數(shù)mciExecute會(huì)直接彈出一個(gè)對(duì)話框,提示出錯(cuò)的原因。而mciSendString函數(shù)會(huì)返回一個(gè)ErrorCode (錯(cuò)誤代碼),該代碼的具體含義您可以參考MSDN中的目錄“Platform SDKGraphics and Multimedia ServicesWindows MultimediaMultimedia ReferenceMultimedia ConstantsMCIERR Return Values”。您可以根據(jù)具體情況選擇到底使用哪一個(gè)函數(shù)來(lái)執(zhí)行MCIming令。例如,在調(diào)試的時(shí)候使用mciExecute,以便快速地獲得錯(cuò)誤原因,而在將要發(fā)布的程序中使用mciSendString函數(shù),讓程序中已設(shè)置的錯(cuò)誤陷阱去處理錯(cuò)誤,以避免頻繁的錯(cuò)誤提示而使用戶覺(jué)得厭煩。
在熟悉了這兩個(gè)函數(shù)后,我們就可以進(jìn)入正題?D?DMCI Command String了。
MCI Command String的ming令格式是這樣的:lpszCommand lpszDevice lpszCommandFlag lpazFlag
lpszCommand是mciming令,例如open,play,stop,close等等。
lpszDevice是設(shè)備名(或文件名)。例如,我們用以下的程序打開(kāi)了我的文檔中的Music01.dat文件,并用“alias”參數(shù)將其別名設(shè)為OpenFile:
dim lReturn as long (1)
lReturn=mciExecute(“open C:Mydocu~1Music01.dat alias OpenFile type MPEGVideo”) (2)
那么,在以后的MCI Command String中l(wèi)pszDevice參數(shù)必須指定為OpenFile。例如,關(guān)閉該文件的代碼如下:
lReturn=mciExecute(“close OpenFile”) (3)
如果我們沒(méi)有為打開(kāi)的文件設(shè)定別名,則以后調(diào)用的MCI Command String中l(wèi)pszDevice參數(shù)為DOS路徑名加文件名。例子如下:
dim lReturn as long (4)
lReturn=mciExecute(“open C:Mydocu~1Music01.dat type MPEGVideo”) (5)
lReturn=mciExecute(“close C:Mydocu~1Music01.dat type MPEGVideo”) (6)
從這里可以看出,設(shè)定別名的好處是減少了代碼的輸入。
LpszCommandFlag是mciming令的參數(shù)。如上代碼(2),“alias OpenFile”以及“type MPEGVideo”就是ming令“open”的參數(shù)。通常一個(gè)mciming令的參數(shù)少則幾個(gè)多則幾十個(gè)。
LpazFlag可以為指定為“wait”或“notity”。如果為“wait”,那么mciming令執(zhí)行完畢后會(huì)向父窗體發(fā)送MCI_WAIT消息,“notity”則發(fā)送MCI_NOTIFY消息。此參數(shù)在Visual Basic中無(wú)甚用處。
在此先聲明一下,微軟支持的多媒體設(shè)備的類型共有cdaudio,dat,digitalvideo,other,overlay,scanner,sequencer,vcr,videodisc,waveaudio十種(注意:微軟不支持RealPlay格式的文件。您可以用以下代碼獲得已打開(kāi)的文件的類型:lReturn=mciSendString(“capability lpszDevice device type”,sReturn,32,0) )。至于哪一類設(shè)備支持哪些參數(shù),您可以在MSDN中查找關(guān)鍵字“MCI Command Strings”,選中所列出的ming令,在其中的HTML幫助文檔中通常會(huì)有一個(gè)表格告訴你哪些設(shè)備支持哪些參數(shù)或者在第一段中有信息告訴您哪些設(shè)備支持該ming令。
好了,現(xiàn)在讓我們對(duì)又繁索,又該死,又強(qiáng)大的mciming令參數(shù)作一個(gè)系統(tǒng)的介紹。(本文僅介紹openming令的常用參數(shù),其它ming令的參數(shù)有機(jī)會(huì)小弟再介紹給大家。)
open:
該ming令用來(lái)打開(kāi)一個(gè)多媒體文件。所有的設(shè)備都支持這個(gè)ming令。在任何mciming令執(zhí)行前,都必須先打開(kāi)多媒體文件,以初始化設(shè)備。