(註:本文以2000年七月的MSDN解釋為準)
MCI Command String是多媒體裝置的程式介面。透過它,我們可以打開一個多媒體文件,例如mp3,VCD文件,Mpeg4格式的文件等等,並對它進行播放,暫停,關閉等操作。現在小弟有幸可以跟大家介紹MCI Command String的使用方法。 MCI Command String是透過mciExecute或mciSendString兩個函數執行的。
這兩個函數的宣告如下:
Private Declare Function mciExecute Lib winmm.dll Alias mciExecute (ByVal lpstrCommand As String) As LongPrivate Declare Function mciSendString Lib winmm.dll Alias mciSendStringA (ByVal lpstrCommand As Long) As Long這兩個函數都有一個叫做lpstrCommand的參數, 這個參數就是我們今天要介紹的MCI Command String。
其中函數mciSendString還有三個參數,lpstrReturnString是一個字串,它用來接收mciSendString函數回傳的資訊(例如,我們在lpstrCommand中的ming令是讓函數傳回開啟的檔案的裝置類型,那麼函數就把裝置類型的資訊保存在這個參數中。 Basic中呼叫時此參數設為0即可。如果ming命令執行出錯,函數mciExecute會直接彈出一個對話框,提示出錯的原因。而mciSendString函數會傳回一個ErrorCode (錯誤代碼),程式碼的具體意義您可以參考MSDN中的目錄Platform SDKGraphics and Multimedia ServicesWindows MultimediaMultimedia ReferenceMultimedia ConstantsMCIERR Return Values。您可以根據具體情況選擇到底使用哪一個函數來執行MCIming命令。例如,在調試的時候使用mciExecute,以便快速地獲得錯誤原因,而在將要發布的程式中使用mciSendString函數,讓程式中已設定的錯誤陷阱去處理錯誤,以避免頻繁的錯誤提示而使用戶覺得厭煩。在熟悉了這兩個函數後,我們就可以進入正題?D?DMCI Command String了。
MCI Command String的ming令格式是這樣的:lpszCommandlpszDevicelpszCommandFlaglpazFlaglpszCommand是mciming令,例如open,play,stop,close等等。 lpszDevice是裝置名稱(或檔案名稱)。例如,我們用以下的程式開啟了我的文件中的Music01.dat文件,並用alias參數將其別名設為OpenFile:dim lReturn as long
(1)lReturn=mciExecute(open C:Mydocu~1Music01.dat alias OpenFile type MPEGVideo)
(2)那麼,在以後的MCI Command String中lpszDevice參數必須指定為OpenFile。例如,關閉該檔案的程式碼如下:lReturn=mciExecute(close OpenFile)
(3)如果我們沒有為開啟的檔案設定別名,則以後呼叫的MCI Command String中lpszDevice參數為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)從這裡可以看出,設定別名的好處是減少了程式碼的輸入。
LpszCommandFlag是mciming令的參數。
如上程式碼(2),alias OpenFile以及type MPEGVideo就是ming令open的參數。
通常一個mciming令的參數少則幾個多則幾十個。 LpazFlag可以為指定為wait或notity。如果為wait,那麼mciming令執行完畢後會向父窗體發送MCI_WAIT訊息,notity則發送MCI_NOTIFY訊息。
此參數在Visual Basic中無甚用處。在此先聲明一下,微軟支援的多媒體裝置的類型共有cdaudio,dat,digitalvideo,other,overlay,scanner,sequencer,vcr,videodisc,waveaudio十種(注意:微軟不支援RealPlay格式的檔案。您可以使用以下程式碼獲得已開啟的檔案的類型:lReturn=mciSendString(capability lpszDevice device type,sReturn,32,0) )。至於哪一類裝置支援哪些參數,您可以在MSDN中尋找關鍵字MCI Command Strings,選取所列出的ming令,在其中的HTML說明文件中通常會有一個表格告訴你哪些裝置支援哪些參數或在第一段中有資訊告訴您哪些設備支援該ming令。
好了,現在讓我們對又繁索,又該死,又強大的mciming令參數作一個系統的介紹。 (本文僅介紹openming令的常用參數,其它ming令的參數有機會小弟再介紹給大家。)open:此ming命令用來開啟一個多媒體檔案。所有的設備都支援這個ming令。在任何mciming命令執行前,都必須先開啟多媒體文件,以初始化設備。