top
Loading...
用API函數控制光驅的開關

使用API函數CDdoor 來控制光驅門的開和關程序十分簡單,由于 CDdoor 函數自身包含了對異常錯誤的處理機制,因此這個程序的通用性很高,你可以把這段代碼移植到你的程序中,實現某些多媒體播放器所常用的開關光驅的功能。

CDdoor函數是安裝WINDOWS時所自帶的winmm.dll文件中包含的函數,我們只須先加入如下的聲明后就能引用這個API函數:

Private Declare Function CDdoor Lib "winmm.dll" Alias "mciSendStringA" _
( _
ByVal lpstrCommand As String, _ String,這是控制命令參數
ByVal lpstrReturnString As String, _String,這是返回值
ByVal uReturnLength As Long, _Long,返回值長度參數
ByVal hwndCallback As Long _
) As Long


引用的語法是:

Call CDdoor("set CDAudio door closed", 0, 0, 0)用以關閉光驅門

Call CDdoor("set CDAudio door open", 0, 0, 0)用以打開光驅門

程序中使用了一個布爾型變量來標示當前光驅門開與關的狀態。

如果配合檢測光驅是否存在的函數一起使用,此程序的通用性會更高。而關于檢測驅動器信息的函數GetDriveType,GetLogicalDrives,我們會在另外一個實例中介紹。
 
為了學習方便,以下提供了源代碼并附詳細的中文注釋:

'-------------------------------------------
'利用API函數控制光驅的開和關
'-------------------------------------------
'程序說明:
'   本例使用API函數 CDdoor 來控制光驅門的開和關程序十分簡單,由于 CDdoor 函數自身包含了對異常錯誤的處理機制,因此這個程序的通用性很高,你可以把這段代碼移植到你的程序中,實現某些多媒體播放器所常用的開關光驅的功能。
'-------------------------------------------

Option Explicit
'說明:CDdoor函數是安裝WINDOWS時所自帶的winmm.dll文件中包含的函數
Private Declare Function CDdoor Lib "winmm.dll" Alias "mciSendStringA" _
( _
ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long _
) As Long

'CDOpen用來標示光驅開與關的狀態
Dim CDOpen As Boolean

Private Sub Command1_Click()
On Error Resume Next

'如果關閉則打開,并且按鈕做相應變化
If CDOpen = False Then
Call CDdoor("set CDAudio door open", 0, 0, 0)
CDOpen = True
Command1.Caption = "點擊關閉光驅"
Else
'否則關閉
Call CDdoor("set CDAudio door closed", 0, 0, 0)
CDOpen = False
Command1.Caption = "點擊打開光驅"
End If
End Sub

Private Sub Form_Load()
CDOpen = False
Call CDdoor("set CDAudio door closed", 0, 0, 0)
End Sub

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗