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