想写一个自己的光驱控制问题,但是不知道怎么办。请各位不吝赐教。

解决方案 »

  1.   

    uses MMSYSTEM;mciSendString('Set cdaudio door open wait', nil, 0, handle); 
    mciSendString('Set cdaudio door closed wait', nil, 0, handle);
      

  2.   

    uses MMSYSTEM;
    procedure CloseCD(Drive: Char);
    Var
      Res : MciError;
      OpenParm: TMCI_Open_Parms;
      Flags : DWord;
      S : String;
      DeviceID : Word;
    begin
      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;
      finally
        mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
      end;
    end;procedure OpenCD(Drive: Char);
    Var
     Res : MciError;
     OpenParm: TMCI_Open_Parms;
     Flags : DWord;
     S : String;
     DeviceID : Word;
    begin
      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;
      finally
        mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
      end;
    end;