Obsługa kilku CD-ROM'ów

0

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.

0

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.

0
  1. 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

;-)

0

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;

1 użytkowników online, w tym zalogowanych: 0, gości: 1