CD привода (далее просто CD)я думаю пользуются все без исключения. Давайте
разберём как создать несложную программу открытия CD. Создадим новый проект.
Кидаем на форму ComboBox и две Button. Создадим две функции:
function CDOpen(Drive: PChar): Boolean;
var
Res: MciError;
OpenParm: TMCI_Open_Parms;
Flags:
DWord;
S: string;
DeviceID: Word;
begin
Result := false;
S := Drive + ':';
Flags :=
mci_Open_Type or mci_Open_Element;
with OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := 'CDAudio';
lpstrElementName :=
PChar(S);
end;
Res := mciSendCommand(0, mci_Open, Flags,
Longint(@OpenParm));
if Res <> 0 then
exit;
DeviceID := OpenParm.wDeviceID;
try
Res := mciSendCommand(DeviceID, MCI_SET,
MCI_SET_DOOR_OPEN, 0);
if Res = 0
then
exit;
Result :=
True;
finally
mciSendCommand(DeviceID, MCI_OPEN,
Flags, Longint(@OpenParm));
end;
end;
function CDClose(Drive: PChar): Boolean;
var
Res: MciError;
OpenParm: TMCI_Open_Parms;
Flags:
DWord;
S: string;
DeviceID: Word;
begin
Result := false;
S := Drive + ':';
Flags :=
mci_Open_Type or mci_Open_Element;
with OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := 'CDAudio';
lpstrElementName :=
PChar(S);
end;
Res := mciSendCommand(0, mci_Open, Flags,
Longint(@OpenParm));
if Res <> 0 then
exit;
DeviceID := OpenParm.wDeviceID;
try
Res := mciSendCommand(DeviceID, MCI_SET,
MCI_SET_DOOR_CLOSE, 0);
if Res = 0
then
exit;
Result :=
True;
finally
mciSendCommand(DeviceID,
MCI_CLOSE, Flags, Longint(@OpenParm)) else
end;
end;
В процедуре создания формы пишем
procedure TForm1.FormCreate(Sender: TObject);
var
w:dword;
Root:string;
I, K:integer;
begin
k:=0;
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
k:=k+1;
Driv[k] :=
Root;
ComboBox1.Items.Add(Driv[k]);
ComboBox1.Text := Driv[1];
end;
end;
end;
Далее в нажатиях на кнопки пишем:
procedure TForm1.Button1Click(Sender:
TObject);
begin
CDOpen(PChar(ComboBox1.Text);
end;
procedure TForm1.Button1Click(Sender:
TObject);
begin
CDClose(PChar(ComboBox1.Text);
end;
Всё программа готова.