使用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-> ->
|