Сидит Билл Гейтс за компьютером. Подходит сынишка:
- Пап, а правда, что твой 95-ый многозадачный?
- Правда, сынок.
- А покажи, как эта многозадачность работает?!
- Сейчас, погоди, дискету доформатирую...
// Данная прога извлекает и закравет CD-ROM выбранные в Combobox1// На форме разместите Button1, Button2 и Combobox1uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, MMSystem;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
function CloseCD(Drive : string) : Boolean;
function OpenCD(Drive : string) : Boolean;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
privatepublicend;
var
Form1: TForm1;
Driv: array [1..25] ofstring;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
OpenCD(ComboBox1.Text);
end;
function TForm1.OpenCD(Drive: string): 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 dobegin
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_Close, Flags, Longint(@OpenParm));
end;
end;
function TForm1.CloseCD(Drive: string): 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 dobegin
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_CLOSED, 0);
if Res=0 then
exit;
Result:=True;
finally
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
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 dobegin
Root[1] := Char(Ord('A')+i);
if (W and (1 shl i))>0 thenif GetDriveType(Pchar(Root)) = DRIVE_CDROM thenbegin
k:=k+1;
Driv[k] := Root;
ComboBox1.Items.Add(Driv[k]);
ComboBox1.Text := Driv[1];
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CloseCD(ComboBox1.Text);
end;
end.
Программа на Delphi, которая открывает и закрывает привод CD-ROM с помощью библиотеки Media Control Interface (MCI). Вот разбивка кода:
Создание формы
Процедура FormCreate вызывается при создании формы. Она инициализирует комбо-бокс списком доступных приводов CD-ROM.
Она получает количество логических дисков с помощью GetLogicalDrives.
Она проходит по каждому диску и проверяет, является ли он приводом CD-ROM с помощью GetDriveType. Если это так, она добавляет букву диска в массив Driv и пополняет комбо-бокс этими значениями.
Процедура OpenCD
Функция OpenCD открывает привод CD-ROM, указанный пользователем в комбо-боксе. Она возвращает булевое значение, указывающее, была ли операция успешной.
Она настраивает структуру MCI_Open_Parms, чтобы指定 тип устройства ('CDAudio') и имя элемента (буква диска).
Она вызывает mciSendCommand с командой mci_Open, чтобы открыть привод CD-ROM.
Если операция была успешной, она устанавливает свойство DeviceID структуры MCI_Open_Parms и пытается открыть дверь с помощью mciSendCommand.
Наконец, она закрывает привод CD-ROM с помощью mciSendCommand.
Процедура CloseCD
Функция CloseCD закрывает привод CD-ROM, указанный пользователем в комбо-боксе. Она возвращает булевое значение, указывающее, была ли операция успешной.
Она настраивает структуру MCI_Open_Parms, чтобы指定 тип устройства ('CDAudio') и имя элемента (буква диска).
Она вызывает mciSendCommand с командой mci_Open, чтобы открыть привод CD-ROM.
Если операция была успешной, она пытается закрыть дверь с помощью mciSendCommand.
Наконец, она закрывает привод CD-ROM с помощью mciSendCommand.
События кликов кнопок
Процедура Button1Click открывает привод CD-ROM при клике на кнопку с надписью "Open".
Процедура Button2Click закрывает привод CD-ROM при клике на кнопку с надписью "Close".
В целом, это программа простого способа открытия и закрытия приводов CD-ROM с помощью MCI. Обратите внимание, что этот код предполагает, что библиотека MCI установлена и настроена на системе.
Программа, написанная на Delphi, позволяет открыть и закрыть CD-дисководы из списка выбранных в Combobox1.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.