Einzelnen Beitrag anzeigen

StefanG

Registriert seit: 23. Feb 2006
74 Beiträge
 
#1

Herausfinden ob das CDRom Laufwerk geöffnet ist.

  Alt 15. Sep 2006, 14:32
Hallo,

wie der Titel schon sagt, versuche ich herauszufinden, ob mein CDRom Laufwerk gerade geöffnet oder geschlossen ist.

Ich habe da die Funktion mciSendCommand gefunden und Folgendes probiert :

Code:
uses mmsystem;

function IsOpen(drive : string) : Boolean;
var
  Flags : Dword;
  OpenParam : TMCI_OPEN_PARMS;
  Status   : TMCI_STATUS_PARMS;
  res      : MCIError;
  DeviceID : Word;
begin
  Result := False;
  Flags := MCI_OPEN_TYPE or MCI_OPEN_ELEMENT;
 
  with OpenParam do
  begin
    dwCallback := 0;
    lpstrDeviceType := 'CDAudio';
    lpstrElementName := Pchar(drive);
  end;
 
  res := mciSendCommand(0, MCI_OPEN, Flags, LongInt(@OpenParam));
  if Res <> 0 then Exit;

  DeviceID := OpenParm.wDeviceID;
  try
    status.dwItem := MCI_STATUS_MODE;
    Res := mciSendCommand(DeviceID, MCI_STATUS, MCI_STATUS_ITEM, LongInt(@status));
    result := status.dwReturn = MCI_MODE_OPEN;
  finally
    mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
  end;
end;
das Gerät scheint er vernünftig zu öffnen, es gibt auch weder Fehler beim kompilieren noch beim Ausführen, soll heißen "res" ist immer 0.

Jedoch ist status.dwReturn auch immer = MCI_MODE_OPEN...auch wenn das CD Laufwerk geschlossen ist.
Was mache ich falsch?
  Mit Zitat antworten Zitat