如何用程序控制光驱的开、关?
(注:一个机器有两个以上的光驱)

解决方案 »

  1.   

    //打开光驱 
    mciSendString('Set cdaudio door open wait', nil, 0, handle);//关闭光驱mciSendString('Set cdaudio door closed wait', nil, 0, handle)
     
      

  2.   

    光驱(光盘)的检测。 
    如果返回值为'0000-0000',则未检测到。function GetHDSerialNumber(Drv : String): String;varVolumeSerialNumber : DWORD;MaximumComponentLength : DWORD;FileSystemFlags : DWORD;beginif Drv[Length(Drv)] =':' then Drv := Drv + ';GetVolumeInformation(pChar(Drv),nil,0,@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,nil,0);Result := IntToHex(HiWord(VolumeSerialNumber), 4) +'-' +IntToHex(LoWord(VolumeSerialNumber), 4);end;
      

  3.   

    我有源码:
      http://210.78.159.116:8080/dispdocnew.php?id=4079
      

  4.   

    打开与关闭  支持多光驱
    uses MMSYSTEM;function OpenCd(handle: HWND; drive: String): Boolean;  //打开
    Var
      Res : MciError;
      OpenParm: TMCI_Open_Parms;
      Flags : DWord;
      S : String;
      DeviceID : Word;
    begin
      Result:=false;
      S:=Drive+':';
      Flags:=mci_Open_Type or mci_Open_Element;
      With OpenParm do begin
        dwCallback := 0;
        lpstrDeviceType := 'CDAudio';
        lpstrElementName := PChar(S);
      end;
      Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
      IF Res<>0 Then exit;
      DeviceID:=OpenParm.wDeviceID;
      try
        Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
        IF Res=0 Then exit;
        Result:=True;
      finally
        mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
      end;
    end;function CloseCd(handle: HWND; drive: String): Boolean;   //关闭
    Var
      Res : MciError;
      OpenParm: TMCI_Open_Parms;
      Flags : DWord;
      S : String;
      DeviceID : Word;
    begin
      Result:=false;
      S:=Drive+':';
      Flags:=mci_Open_Type or mci_Open_Element;
      With OpenParm do begin
        dwCallback := 0;
        lpstrDeviceType := 'CDAudio';
        lpstrElementName := PChar(S);
      end;
      Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
      IF Res<>0 Then exit;
      DeviceID:=OpenParm.wDeviceID;
      try
        Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
        IF Res=0 Then exit;
        Result:=True;
      finally
        mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
      end;
    end;