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?