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

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

CD-ROM [D6, WinXP]


ArthurKhamitov ©   (2004-05-11 18:23:00) 

Как программно (через Delphi) закрыть CD-дисковод?


grom2   (2004-05-14 09:48:00) [1]

apihelp   (13.05.04 16:43) [7]

С помощью mcisendString('Set cdaudio door open wait', nil, 0, handle) можно открыть только один привод который в системе стоит первым. А если на компе стоит 2 или 3 привода.
С помощью function OpenCD(Drive:string):Boolean; открывается любой привод


apihelp   (2004-05-13 16:43:00) [2]

>grom2  (13.05.04 12:16) [5]
Ниструя себе

в Uses в обяз добавить "mmsystem"
Открыть
procedure TForm1.Button1Click(Sender: TObject);
begin
mcisendString('Set cdaudio door open wait', nil, 0, handle);
end;
Закрыть
procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
end;


Nebiyev   (2004-05-13 16:21:00) [3]

Мы пробовали MCISendString, но делфи не признал этого. что нам надо написать в uses?


grom2   (2004-05-13 12:16:00) [4]

//vvvvvvvvvvvvvvvvvvvvvvvvv/ Open CD / Close CD /vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
function OpenCD(Drive:string):Boolean;
var
Res : MciError;
OpenParm: TMCI_Open_Parms;
Flags,DeviceID : Word;
begin
Result:=false;
Flags:=mci_Open_Type or mci_Open_Element;
with OpenParm do begin
dwCallback := 0;
lpstrDeviceType := 'CDAudio';
lpstrElementName := PChar(Drive+':');
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:string):Boolean;
var
Res : MciError;
OpenParm: TMCI_Open_Parms;
Flags,DeviceID : Word;
begin
Result:=false;
Flags:=mci_Open_Type or mci_Open_Element;
with OpenParm do begin
dwCallback := 0;
lpstrDeviceType := 'CDAudio';
lpstrElementName := PChar(Drive+':');
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;


Dimich1978   (2004-05-11 19:44:00) [5]

А если слово "closed" поменять на "access denied", то сидюк  повесится на шнуре питания, если вовремя успеть то откачать еше будет можно путем искусственного дыхания и клизмой :))))))


Agent13   (2004-05-11 19:21:00) [6]

А если слово "closed" поменять на "open", то сидюк откроется :)


Agent13   (2004-05-11 19:20:00) [7]

Да, действительно в MMsystem:

MCISendString('Set CDAudio door closed wait', nil, 0, Form1.Handle);


IceBeerg   (2004-05-11 18:26:00) [8]

Поищи в mmsystem.pas... Должна быть функция которая и открывает и закрывает.


Наверх

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