Witam. Mam problem. [glowa] Zrobiłem program który wysuwa i wsuwa mi CD-ROM. Mam 2 CD-ROM'y i nie wiem jak zmusić w programie do wysunięcia drugiego. Wysuwa mi się tylko pierwszy.
Użyłem do tego procedury:
otwieranie szuflady: MciSendString('Set cdaudio door open wait',nil,0,handle);
zamykanie szuflady: MciSendString('Set cdaudio door closed wait',nil,0,handle);
ale ona tylko wysuwa jeden CD-ROM. Nie wiem co zrobić bym mógł wysunąć drugi.
- Jak otworzyć i zamknąć napęd CDROM o dowolnej literze ?
uses MMSystem;
procedure OpenCloseCD(Drive: String; OpenCD: Boolean);
var
OpenParm: TMCI_Open_Parms;
begin
OpenParm.dwCallback := 0;
OpenParm.lpstrDeviceType := 'CDAudio';
OpenParm.lpstrElementName := PChar(Drive); {Litera dysku musi być np. "X:"}
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 (albo wszystkie obecne CDROMy w komputerze) 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
;-)
Wielkie dzięki. :-)
Udało mi się poradzić z problemem w inny sposób. :-D Oto przykład
(wycinek z mojego programu [green] ) kodu do wysuwania i wsuwania dwóch CD-ROM 'ów ( F: i G: ). ;-)
CD-ROM F:
procedure TCDROM.Wysun1Click(Sender: TObject);
begin
// Open drive F: (F being the letter of the drive you wish to open)
mciSendString('open cdaudio!F: alias driveF', nil, 0, 0);
mciSendString('set driveF door open wait', nil, 0, 0);
end;
procedure TCDROM.Wsun1Click(Sender: TObject);
begin
// Close drive F:
mciSendString('set driveF door closed wait', nil, 0, 0);
end;
CD-ROM G:
procedure TCDROM.Wysun1Click(Sender: TObject);
begin
// Open drive G: (G being the letter of the drive you wish to open)
mciSendString('open cdaudio!G: alias driveG', nil, 0, 0);
mciSendString('set driveG door open wait', nil, 0, 0);
end;
procedure TCDROM.Wsun1Click(Sender: TObject);
begin
// Close drive G:
mciSendString('set driveF door closed wait', nil, 0, 0);
end;