Как программно открыть/закрыть CDRom?
Вариант первый
uses
..., MMSystem;
// Открыть CDRom mciSendString( 'Set cdaudio door open wait', nil, 0, handle );
// Закрыть CDRom mciSendString( 'Set cdaudio door closed wait', nil, 0, handle );
|
Вариант второй
uses
..., MMSystem;
function OpenCD( Drive: Char ): 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_Close, Flags, Longint( @OpenParm ) );
end;
end;
function CloseCD( Drive: Char ): 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_CLOSED, 0 );
if Res = 0 then
Exit;
Result := true;
finally
mciSendCommand( DeviceID, mci_Close, Flags, Longint( @OpenParm ) );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenCD( 'p' );
end;
procedure TForm1.Button2Click(Sender: TObject);
begin CloseCD( 'p' );
end; |