Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Открытие/закрытие CD-ROM'a


Автор: THandle 5.2.2008, 21:33
Вот решил добавить эту темку в FAQ, так как сегодня этим вопросом меня опять разозлил мой друг.

Вот собственно код:

Код

uses MMSystem;

...

mciSendString('Set cdaudio Door Open Wait', nil, 0, handle); //открытие CD-ROM'a
mciSendString('Set cdaudio Door Closed Wait', nil, 0, handle);//закрытие CD-ROM'a

Автор: SneG0K 5.2.2008, 22:51
Иногда бывает полезо... Особенно как я над мамой прикалывался с сд-ромом smile да и с компом... эх.. Люблю я над кем нибьлт поприкалываться smile 

Автор: Elfebet 6.2.2008, 10:06
Боян, этот код был известен мне еще 5 лет назад

Автор: THandle 6.2.2008, 11:52
Elfebet, я полностью согласен что это боян, но у новичков этот вопрос пользуется довольно большой популярностью.

Автор: Kanes 6.2.2008, 12:09
Развернутый пример: (с) DRKB
Код

// DriveTools 1.0                                                               * 
//                 (c) 1999 Jan Peter Stotz                                     * 
// If you find bugs, has ideas for missing featurs, feel free to contact me     * 
//                           [email protected]                                     * 
// 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.

Автор: volvo877 6.2.2008, 13:44
Угу... Давайте теперь весь FAQ по второму разу продублируем? 
http://forum.vingrad.ru/faq/topic-156750.html

Автор: THandle 6.2.2008, 13:57
Эта тема создана специально в FAQ для начинающих, специально в кратком виде дан код. Это нужно именно для новичков, так как с тем развернутым примером не каждый сможет разобраться. Все это конечно ИМХО.

Автор: Kanes 6.2.2008, 14:07
volvo877, хм, а в Фак я и не посмотрел smile 


THandle, просто я помню года 3 назад сам сталкивался с этим вопросом и без развернутого примера, зная только эти две функции, ничего толком сделать не смог.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)