mciSendString('Set cdaudio door open wait', nil, 0, handle); {打开光驱}
mciSendString('Set cdaudio door closed wait', nil, 0, handle) {关闭光驱}
在2000下好使,98下不行!怎么办啊?

解决方案 »

  1.   

    //关闭指定光驱
    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;分~哈哈