Delphi-Help

Главная Статьи CD-ROM Как программно открыть/закрыть CDRom?

Как программно открыть/закрыть CDRom?

Оцените материал
(0 голосов)


Как программно открыть/закрыть 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;
Прочитано 5463 раз

Авторизация



Счетчики