Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Открыть CD-ROM


Клиент:
- В стоимость мультимедийного компьютера CDROM входит?
- Входит.
- Так там нет его!
- Kак нет?.. Я его Вам поставил.
- Ну, как, мы его открываем, а там пусто!..

Основываясь, на этой возможности можно написать классную прогу. Представьте себе: ламерюга с умным видом тайпает какой-нибудь док, а тут его сидюк начинает вести себя как взбесившийся: то откроется, то закроется, то откроется, то закроется, то откроется, то закроется, то откроется, то закроется, то откроется, то закроется, то откроется, то закроется, то откроется, то закроется, то откроется, то закроется... и так, например, каждый час... (или минуту...или секунду...)

Для начала научимся открывать CD-ROM по нажатию простого "батона":

  • В uses нужно сначала объявить модуль MMSystem:

uses
  MMSystem;

  • По нажатию кнопок написать:

//Для открытия
procedure TForm1.OpenBtnClick(Sender: TObject);
begin
  mciSendString('Set cdaudio door open wait', nil, 0, handle);
end;

//Для закрытия
procedure TForm1.CloseBtnClick(Sender: TObject);
begin
  mciSendString('Set cdaudio door closed wait', nil, 0, handle);
end;

Ну а если вы уж хотите, чтобы это всё происходило автоматически с периодичностью в несколько минут, тогда выносим наш любимый компонент - Timer. Устанавливаем его свойство Interval в 30000 миллисекунд - это 30 секунд, т.е. каждые полминуты глупый ламерюга будет подскакивать...И на событие OnTimer, предвкушая удовольствие, пишем: сначала в публичных объявлениях объявим переменную логического типа IsOpen для обозначения времени когда открыт CD-ROM


public
  { Public declarations }
  IsOpen: boolean;

По созданию окна (OnCreate) устанавливаем эту переменную в false, т.к. изначально, когда наша прога только запускается, CD-ROM не открыт:


procedure TForm1.FormCreate(Sender: TObject);
begin
  IsOpen := false;
end;

И наконец, по таймеру пишем:


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if IsOpen = false then
  begin
    mciSendString('Set cdaudio door open wait', nil, 0, handle);
    IsOpen:=true;
  end
  else
  begin
    mciSendString('Set cdaudio door closed wait', nil, 0, handle);
    IsOpen:=false;
  end;
end;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay