Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Открытие и закрытие дисковода [D7]


VVR ©   (2007-04-27 00:17:00) 

Помогите!!!!!!!!!!!!!
Как открыть и закрыть дисковод по нажатию кнопки?


Novice   (2007-04-28 09:22:00) [1]

вот:

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.

(c) DelphiWorld - и вопросов будет меньше.


{RASkov}   (2007-04-27 19:54:00) [2]

> [9] Anatoly Podgoretsky ©   (27.04.07 19:44)

:)
Тут вон в [6] выдвинули версию, что друг автора там застрял, диск это мелоч....


Anatoly Podgoretsky   (2007-04-27 19:44:00) [3]

> {RASkov}  (27.04.2007 01:24:03)  [3]

Он там диск оставил.

--


zdm   (2007-04-27 14:46:00) [4]


> clickmaker ©   (27.04.07 12:14) [6]

Супер ;))))


Asail   (2007-04-27 14:02:00) [5]


> Как открыть и закрыть дисковод по нажатию кнопки?

1. Нажать на кнопку - открыть дисковод.
2. Нажать на кнопку - закрыть дисковод.


clickmaker   (2007-04-27 12:14:00) [6]


> Помогите!!!!!!!!!!!!!

количество воскл. знаков наводит на мысль, что кто-то в этом самом дисководе застрял...


homm   (2007-04-27 11:50:00) [7]

> Как открыть и закрыть дисковод по нажатию кнопки?

«Нейропрограммированием швейцара»
© не помню чей, но очень понравилось :)


Desdechado   (2007-04-27 11:19:00) [8]

Традиционный вопрос:
А если дисковод без кнопки и лотка, просто щель? Что ты там собираешься открывать?


{RASkov}   (2007-04-27 01:24:00) [9]

> [2] Джо ©   (27.04.07 01:15)
> А что же, в Маках именно такие дисководы

Не думаю, что VVR пишет прогу для Мака на D7 ;)
И вообще.... может он купил новый CD-ROM, а питание не пристегнул, вот и не может - ни открыть, ни закрыть его :)
А D7 - на всякий случай указал, увидал в другой ветке...


Джо   (2007-04-27 01:15:00) [10]

> [1] {RASkov} ©   (27.04.07 00:33)
> Дисковод 3,5"?

А что же, в Маках именно такие дисководы и были раньше (сейчас не знаю). И в нек. других машинах, вроде.


{RASkov}   (2007-04-27 00:33:00) [11]

Дисковод 3,5"?
Кнопку на приводе нажимать?
Если все не так - то может это:
mciSendString('Set cdaudio door open wait', nil, 0, handle);
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
соответственно: "открыть" и "закрыть" CD-ROM....
в uses MMSystem.


Наверх

Титульная страница Поиск, карта сайта Написать письмо