Управление CD приводом
CD приводом (далее просто CD) я думаю пользуются все без исключения. Давайте разберём как создать несложную программу открытия CD. Создадим новый проект. Кидаем на форму ComboBox и две Button. В разделе uses дописываем MMSystem. Создадим универсальную функцию. В Unit’е после {$R *.dfm} пишем:
function CD(Drive: PChar; OpenClose: Boolean): Boolean;
var
Res: MciError;
OpenParm: TMCI_Open_Parms;
Flags: DWord;
DeviceID: Word;
begin
Result := false;
Flags := mci_Open_Type or mci_Open_Element;
with OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := ‘CDAudio’;
lpstrElementName := Drive;
end;
Res := mciSendCommand(0, MCI_OPEN, Flags, Longint(@OpenParm));
if Res <> 0 then exit;
DeviceID := OpenParm.wDeviceID;
try
if OpenClose=true then
Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0) else
Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
if Res = 0 then exit;
Result := True;
finally
if OpenClose=true then
mciSendCommand(DeviceID, MCI_OPEN, Flags, Longint(@OpenParm)) else
mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
end;
end;
В процедуре создания формы пишем:
procedure TForm1.FormCreate(Sender: TObject);
var
nid : TNotifyIconData;
w:dword;
Root:string;
i:integer;
begin
w:=GetLogicalDrives;
Root := ‘#:’;
for i := 0 to 25 do
begin
Root[1] := Char(Ord(‘A’)+i);
if (W and (1 shl i))>0 then
if GetDriveType(Pchar(Root)) = DRIVE_CDROM then
begin
ComboBox1.Items.Add(Root);
ComboBox1.Text := Root;
end;
end;
end;
Далее в нажатиях на кнопки пишем:
procedure TForm1.Button1Click(Sender: TObject);
begin
CD(PChar(ComboBox1.Text),true); // открыть
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CD(PChar(ComboBox1.Text),true); // закрыть
end;
Всё программа готова.
Статья была переписана заново Автором.
Ну вот… ещё одни…
Может уже стоит сделать какой-нить универсальный модуль… что ли…
половина программ установленных у меня на компе работает с cd-rom…
имхо:
может всё таки стоит выделять свои программы чем-нибудь другим?
cd-rom уже не оригинально…
Это не ещё одна программа, это код для открытия CD-Rom’а по букве. Не оригинально это вот этот код mciSendString(‘Set cdaudio door open wait’, nil, 0, handle);
а этот код можно использовать для DVD ИЛИ НЕЛЬЗЯ???????
Код из статьи вроде работает для всех приводов (даже для виртуальных)
Намного проще.
MciSendString(0,’Set cdaudio door open’,0,0); -Открыть
MciSendString(0,’Set cdaudio door close’,0,0); -Закрыть
MciSendString(Id привода,’Set cdaudio door open’,0,0);
id привода можно получить из кода выше