Jak wysunąć CD-ROM (CD-RW, DVD itp ) o dowolnej literze
werw0e
Z jakiejś strony kiedyś brutalnie zerżnąłem :)
{ Dla dowolnej litery :) }
uses
MMSystem;
procedure OpenCloseCD(Drive: string; OpenCD: Boolean);
{Litera dysku musi być np. "X:",
OpenCD:
true = otworzyć
false = zamknąć}
var
OpenParm: TMCI_Open_Parms;
Handle: THandle;
begin
OpenParm.dwCallback := 0;
OpenParm.lpstrDeviceType := 'CDAudio';
OpenParm.lpstrElementName := PChar(Drive);
OpenParm.dwCallback := Handle;
if OpenCD then
begin {Otwieranie napędu CDROM}
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, Longint(@OpenParm));
mciSendCommand(OpenParm.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
end
else
begin
{Zamykanie napędu CDROM}}
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, Longint(@OpenParm));
mciSendCommand(OpenParm.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
end;
{Należy jeszcze zamknąć MCI, inaczej kolejna próba otwarcia albo zamknięcia szuflady CDROM nie powiodła by się}
mciSendCommand(OpenParm.wDeviceID, MCI_CLOSE, MCI_NOTIFY, Longint(@OpenParm));
OpenCD := not OpenCD;
end;
Aby po prostu wysunąć CD-ROM(nie wiadomo jaki) należy :
uses
mmsystem;
mciSendString('Set cdaudio door open wait',nil,0,handle); {wysunięcie }
mciSendString('Set cdaudio door closed wait',nil,0,handle); { wsunięcie }
OpenCD := not OpenCD;
mi tam w delphi 7 [enterprise] działa :)))) i jest git :p
jest mały błąd w komentarzu:
{Zamykanie napędu CDROM}} <= nie potrzebny drugi nawias.
ale to taki malutki błąd. myśle że przed dodaniem artukułów autorzy niech sprawdzaja czy to wogóle działa :)) hehe
Należy poprawić linie:
[code]OpenParm.lpstrDeviceType := 'CDAudio'; [/code]
na
oraz
[code]{Zamykanie napędu CDROM}} [/code]
na
Ale jaki komunikat wysyła win przy otwieraniu napędu do programu - chodzi mi o przejęcie go procedurą:
procedure DriveOpenClose(var: msg: TMessage); WM_COŚ TAM message;
No i...
I tu jest mały błąd - tak być powinno. \ dopiero za '
przy: mciSendString('\Set cdaudio door open wait',nil,0,handle); {wysunięcie }
Coś jakby nie działa... :-(
(Delphi6 linia 11 procedury : illegal character ""
to samo w tym na dole)