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

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

CD-ROM


Rolf ©   (2003-07-09 21:44:00) 

Уважаемые мастера! Вот я написал что-бы прога открывала и закрывала CD-ROM. А у меня есть ещё и резак.Как тут быт, чтобы и его открывать?


begemot   (2003-07-11 15:20:00) [1]

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;

OpenParm.dwCallback:= 0;
OpenParm.lpstrDeviceType:= "CDAudio";
OpenParm.lpstrElementName:= PChar(S);

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;

OpenParm.dwCallback:= 0;
OpenParm.lpstrDeviceType:= "CDAudio";
OpenParm.lpstrElementName:= PChar(S);

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;

function DMSecBetweenTime(const AOld,ANow: TDateTime): Int64;
var // Result правильный если две даты принадлежат 24ч
ABetween: TDateTime;
H,M,S,MS: Word;
begin
Result:= -1;
if (AOld > 1) or (ANow > 1) then //AOld and ANow only Time
Exit;
if AOld > ANow then
ABetween:= 1+ANow-AOld
else
ABetween:= ANow-AOld;
DecodeTime(ABetween,H,M,S,MS);

Result:= MS+(S*1000)+(M*60*1000)+(H*60*60*1000)
end;

procedure btEjClClick(Drive: Char); //Drive<D,E(Одна буква)
var
OldTime : TDateTime;
BWMSt : Int64;
begin

OldTime:= Time;
CloseCD(Drive);
BWMSt:= DMSecBetweenTime(OldTime,Time);

if BWMSt < 1000 then //При закрытом лотке
( NameDrive)

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;

OpenParm.dwCallback:= 0;
OpenParm.lpstrDeviceType:= "CDAudio";
OpenParm.lpstrElementName:= PChar(S);

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;

OpenParm.dwCallback:= 0;
OpenParm.lpstrDeviceType:= "CDAudio";
OpenParm.lpstrElementName:= PChar(S);

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;

function DMSecBetweenTime(const AOld,ANow: TDateTime): Int64;
var // Result правильный если две даты принадлежат 24ч
ABetween: TDateTime;
H,M,S,MS: Word;
begin
Result:= -1;
if (AOld > 1) or (ANow > 1) then //AOld and ANow only Time
Exit;
if AOld > ANow then
ABetween:= 1+ANow-AOld
else
ABetween:= ANow-AOld;
DecodeTime(ABetween,H,M,S,MS);

Result:= MS+(S*1000)+(M*60*1000)+(H*60*60*1000)
end;

procedure btEjClClick(Drive: Char); //Drive<D,E(Одна буква)
var
OldTime : TDateTime;
BWMSt : Int64;
begin

OldTime:= Time;
CloseCD(Drive);
BWMSt:= DMSecBetweenTime(OldTime,Time);

if BWMSt < 1000 then //При закрытом лотке
OpenCD(NameDrive);


end;


Е-Моё имя   (2003-07-10 09:55:00) [2]

букву в проге поменяй))))


Наверх

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