Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2009, 20:28   #11
TRIZER
Студент
Пользователь
 
Аватар для TRIZER
 
Регистрация: 13.11.2009
Сообщений: 65
По умолчанию

эти функции не сработают с несколькими CD

вот этот код проверял - работает

Код:
  

// (c) 1999 Jan Peter Stotz

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.
если вдруг нарушаю правила - не бейте сильно
TRIZER вне форума Ответить с цитированием
Старый 17.11.2009, 21:38   #12
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

А как програмнно узнать, что сейчас привод закрыт или наоборот открыт? Например мне надо на горячую клавишу функцию поставить.
Casper-SC вне форума Ответить с цитированием
Старый 17.11.2009, 22:32   #13
TRIZER
Студент
Пользователь
 
Аватар для TRIZER
 
Регистрация: 13.11.2009
Сообщений: 65
По умолчанию

Хех ... я не вижу смысла, зачем тебе узнавать - закрыт или нет
TRIZER вне форума Ответить с цитированием
Старый 17.11.2009, 23:43   #14
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Цитата:
Сообщение от TRIZER Посмотреть сообщение
Хех ... я не вижу смысла, зачем тебе узнавать - закрыт или нет
Ну например ставлю я на Alt+Space Открыть/Закрыть CD-ROM и как это реализовать? Не ставить же 2 команды подряд. Надо же как-то определить открыт он или нет.

Надо ещё не забывать, что CD-ROM может быть уже открыт другим способом, не нашей программой и поэтому типа нажал открыть CD-ROM, переменная Opened := True не прокатит

Последний раз редактировалось Casper-SC; 17.11.2009 в 23:50.
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как открыть свойства обозревателя программно? Denisko Общие вопросы Delphi 9 28.04.2009 18:52
DVD-ROM то определяется, то не определяетс... Иллидан Компьютерное железо 1 22.04.2008 15:22
Как открыть DVD-rom Kalewa-Uliss Win Api 2 16.07.2007 07:24
Как открыть CD-ROM програмно? bagdat Win Api 3 02.07.2007 14:57