使用API函數CDdoor來控制光驅門的開和關程序十分簡單,由於CDdoor函數自身包含了對異常錯誤的處理機制,因此這個程序的通用性很高,你可以把這段代碼移植到你的程序中,實現某些多媒體播放器所常用的開關光驅的功能。
CDdoor函數是安裝WINDOWS時所自帶的winmm.dll文件中包含的函數,我們只須先加入如下的聲明後就能引用這個API函數:
->PrivateDeclareFunctionCDdoorLib"winmm.dll"Alias"mciSendStringA"_
(_
ByVallpstrCommandAsString,_ String,這是控制命令參數
ByVallpstrReturnStringAsString,_ String,這是返回值
ByValuReturnLengthAsLong,_ Long,返回值長度參數
ByValhwndCallbackAsLong_
)AsLong->
引用的語法是:
->CallCDdoor("setCDAudiodoorclosed",0,0,0) 用以關閉光驅門
CallCDdoor("setCDAudiodooropen",0,0,0) 用以打開光驅門->
程序中使用了一個布爾型變量來標示當前光驅門開與關的狀態。
如果配合檢測光驅是否存在的函數一起使用,此程序的通用性會更高。而關於檢測驅動器信息的函數GetDriveType,GetLogicalDrives,我們會在另外一個實例中介紹。
為了學習方便,以下提供了源代碼並附詳細的中文注釋:
-> '-------------------------------------------
' 利用API函數控制光驅的開和關
'-------------------------------------------
'程序說明:
'本例使用API函數CDdoor來控制光驅門的開和關程序十分簡單,由於CDdoor函數自身包含了對異常錯誤的處理機制,因此這個程序的通用性很高,你可以把這段代碼移植到你的程序中,實現某些多媒體播放器所常用的開關光驅的功能。
'-------------------------------------------
OptionExplicit
'說明:CDdoor函數是安裝WINDOWS時所自帶的winmm.dll文件中包含的函數
PrivateDeclareFunctionCDdoorLib"winmm.dll"Alias"mciSendStringA"_
(_
ByVallpstrCommandAsString,_
ByVallpstrReturnStringAsString,_
ByValuReturnLengthAsLong,_
ByValhwndCallbackAsLong_
)AsLong
'CDOpen用來標示光驅開與關的狀態
DimCDOpenAsBoolean
PrivateSubCommand1_Click()
OnErrorResumeNext
'如果關閉則打開,並且按鈕做相應變化
IfCDOpen=FalseThen
CallCDdoor("setCDAudiodooropen",0,0,0)
CDOpen=True
Command1.Caption="點擊關閉光驅"
Else
'否則關閉
CallCDdoor("setCDAudiodoorclosed",0,0,0)
CDOpen=False
Command1.Caption="點擊打開光驅"
EndIf
EndSub
PrivateSubForm_Load()
CDOpen=False
CallCDdoor("setCDAudiodoorclosed",0,0,0)
EndSub->->