БОЛЬШОЙ FAQ ПО DELPHI



Открытие и закрытие нескольких приводов CD-ROM

Автор: Vadim Petrov

Глубокая ночь. Сидит юзер за компом. Вдруг на мониторе белым по черному высвечивается: "Если нажмешь 10 клавиш одновременно, покажу голую бабу". Ну юзер не долго думая продавливает 10 клавиш обоими руками. Тут на мониторе появляется: "Молодец! А если, скатина, отпустишь хоть одну клавишу - все диски форматну!!!"

Что касается вопроса "Открытие и закрытие привода CD-ROM", то при наличии более одного CD-ROMа в системе, рекомендую воспользоваться следующими функциями:


 //                  ____       _          ______            __
 //                 / __ \_____(_)   _____/_  __/___  ____  / /____
 //                / / / / ___/ / | / / _ \/ / / __ \/ __ \/ / ___/
 //               / /_/ / /  / /| |/ /  __/ / / /_/ / /_/ / (__  )
 //              /_____/_/  /_/ |___/\___/_/  \____/\____/_/____/
 //
 (*******************************************************************************
 * DriveTools 1.0                                                               *
 *                                                                              *
 *                 (c) 1999 Jan Peter Stotz                                     *
 *                                                                              *
 ********************************************************************************
 *                                                                              *
 * If you find bugs, has ideas for missing featurs, feel free to contact me     *
 *                           jpstotz@gmx.de                                     *
 *                                                                              *
 ********************************************************************************
 * Date last modified:   May 22, 1999                                           *
 *******************************************************************************)
 
 unit DriveTools;
 
 interface
 
 uses
 
   Windows, SysUtils, MMSystem;
 
 function CloseCD(Drive: Char): Boolean;
 function OpenCD(Drive: Char): Boolean;
 
 implementation
 
 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;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ