热情软件屋

 

如何控制光驱的弹出,关闭及其获取其状态


编号:QA000310
建立日期: 1999年1月7日 最后修改日期:2000年3月23日
所属类别:

Hu Minghu:
    请问在Windows编程中如何控制光驱的弹出,关闭及其获取其状态?

回答:

    使用MCI命令可以做到这一点。
    可以用mciSendString函数,下面是一段VB的例子。
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    
    
    Private Sub Command1_Click()
     mciSendString "Set CDAudio Door Open Wait", 0&, 0, 0 ' 弹出
    End Sub
    
    Private Sub Command2_Click()
     mciSendString "Set CDAudio Door Closed Wait", 0&, 0, 0 ' 关闭
    End Sub
    

    
    也可以用mciSendCommand。下面是一段Delphi程序,演示了如何控制光驱。
    program cdinout;
    
uses mmSystem;
    
    
var
    
MCIO : TMCI_Open_Parms;
    
MCIS : TMCI_Status_Parms;
    
    
begin
    
    
MCIO.lpstrDeviceType := PChar(MCI_DEVTYPE_CD_AUDIO);
    
if mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE or MCI_OPEN_TYPE_ID or
    
MCI_OPEN_SHAREABLE, LongInt(@MCIO) )= 0 then
    
begin
    
MCIS.dwItem := MCI_STATUS_READY;
    
mciSendCommand(MCIO.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM
    
or MCI_WAIT, LongInt(@MCIS));
    
if MCIS.dwReturn<> 0 then
    
mciSendCommand(MCIO.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0)
    
else
    
mciSendCommand(MCIO.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
    
mciSendCommand(MCIO.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);
    
end;
    
end.
    

    
    相关问题:
    QA000531 "如何判断光驱的仓门的状态"
    QA000610 "如何支持2个以上的光驱"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio