Форум: "Система";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизКак узнать выдвинут-ли лоток CD-ROMa или задвинут Найти похожие ветки
← →
Dankin (2002-12-03 17:56) [0]Как узнать выдвинут-ли лоток CD-ROMa или задвинут?
← →
Виктор Щербаков (2002-12-03 17:59) [1]А как узнать есть лоток или нет? :)))
← →
Игорь Шевченко (2002-12-03 17:59) [2]Глаза.exe
← →
greenrul (2002-12-03 19:23) [3]А если серъезно?
← →
Anatoly Podgoretsky (2002-12-03 19:43) [4]А это серьезно и есть
← →
Dankin (2002-12-04 02:41) [5]Действительно очень смешные шутки. Яж серъезно спрашиваю...
Если просто смотреть есть диск или нет то если его нет
то может лоток и не выдвинут а просто НЕТУ ЕГО ТАМ.
(всмысле диска).
← →
Vad (2002-12-04 06:55) [6]А если его там вообще нет?(лоток сломали) :-)
А как определить есть ли на выдвинутом лотке диск
или лоток пустой? :-)
----------------------------------------------------------
Нету датчиков на стандартном CD проверяющих наличие диска
или закрыт лоток или нет. Есть один датчик, но он просто останавливает втягивающий двигатель и запускает процесс
определения диска.
Если ты, к примеру, положишь пустую болванку или диск другой стороной, то для CD это равносильно, тому что диска нет.
Поэтому единственный выход попробовать задвинуть лоток,
даже если он уже задвинут.
... и тогда ты сразу все поймешь... есть диск ... нет диск. :-)
← →
Dankin (2002-12-05 01:20) [7]А можно как нибудь узнать удалось задвинуть или нет... То есть
он уже задвинут.
Или там ничего не возвращается?
← →
Vad (2002-12-05 02:55) [8]To:Dankin ©
Пробуешь прочитать CD диск, если не читается,
посылаешь команду задвинуть лоток, снова пробуешь
прочитать CD диск, если не читается, посылаешь
сообщение с просьбой вставить диск и так по кругу... :-)
← →
Dm9 (2002-12-05 06:20) [9]Из справки
\Как програмно открыть\закрыть поддон CD-ROM?
Группа ссылок: MCI
Вариант 1:
Функция OpenCD открывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо открыть.
Функция CloseCD закрывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо закрыть.
.....
uses
... MMSystem;
function OpenCD(Drive : Char) : Boolean;
Var
Err : MciError;
OpenParm: TMCI_Open_Parms;
Flags : DWord;
S : String;
DeviceID : Word;
begin
Result:=false;
S:=Drive+":";
Flags:=mci_Open_Type or mci_Open_Element; // См. mci_Open
With OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";
lpstrElementName := PChar(S);
end;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
IF Err=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
end;
end;
function CloseCD(Drive : Char) : Boolean;
Var
Err : 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;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
IF Err=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
end;
end;
Вариант 2:
Данные функции работаю только с первым устройством в системе:
Открыть дверцу:
mciSendString( "Set cdaudio door open wait", nil, 0, application.handle);
закрыть дверцу:
mciSendString( "Set cdaudio door closed wait", nil, 0, application.handle);
← →
Dm9 (2002-12-05 06:25) [10]Сорри, промахнулся, хотел скопировать это: может, поможет.
\Как отловить открытие\закрытие CD-ROM"а?
Использовать сообщение WM_DEVICECHANGE.
TForm1 = class(TForm)
procedure ReceiveMessage (var Msg: TMessage); message WM_DEVICECHANGE;
private
{ Private declarations }
public
{ Public declarations }
end;
...
procedure TForm1.ReceiveMessage(var Msg: TMessage);
begin
if Msg.WParam=32772 then
ShowMessage("CD-ROM Open");
if Msg.WParam=32768 then
ShowMessage("CD-ROM Close");
end;
← →
Vad (2002-12-05 10:05) [11]К сожалению приведенный код с ReceiveMessage
страдает маленьким, но существенным недостатком.
Он реагирует только на изменение количества
драйвов в системе и работает только при включенном
автораспознавании CD диска.
Пустой лоток можно гонять туда-сюда сколько угодно.
Так, что чуда не произошло.
Этот код точно-также срабатывает при вставлении USB Flash
и других сменных носителей.
← →
Игорь Шевченко (2002-12-05 10:12) [12]Как узнать, есть ли коврик для мыши или нет ?
← →
Dankin (2002-12-07 02:19) [13]Dm9 огромный сенкс, ты мне очень помог. Vad-выкрутимся.
Игорь Шевченко, ты знаеш шутник из тебя никакой...
(Блин ну не можеш ничего посоветовать так не советуй)
← →
Koster (2002-12-09 07:09) [14]Удалено модератором
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c