![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
состояние лотка у CD
ASd © (2004-07-30 20:33:00)Как определить состояние лотка у CD т.е. открат или закрыт
Rouse_ (2004-09-07 09:24:00) [1]> Хотя точно знаю, что можно определить через Adaptec ASPI.
Нууу это спорный вопрос. Не уверен что сидиром сам знает в каком состоянии у него лоток :) (В смысле чтобы оповестить об этом внешнее приложение или драйвер). По крайней мере AFAIK часть моделей этого точно сделать не в состоянии :) Кто-то приводил тут примеры...
DVM (2004-09-06 21:57:00) [2]
> Rouse_ © (06.09.04 11:53) [16]
Да, точно, похоже это единственный правильный способ. (если удалось задвинуть)
Хотя точно знаю, что можно определить через Adaptec ASPI. Я там в какой то структуре видел поле за состояние лотка отвечающее.
Rouse_ (2004-09-06 11:53:00) [3]Давно было обсуждени и в прошлый раз остановились на следующем.
При старте программы посылать команду закрытия лотка и после отлавливать его открытие - закрытие следующим кодом:
procedure CD(var Msg: TMessage); message WM_DEVICECHANGE;
...
procedure TForm1.CD(var Msg: TMessage);
begin
case Msg.WParam of
32772: Caption := 'Open';
32768: Caption := 'Close';
else
Caption := 'Unknown';
end;
end;
TeNY (2004-09-06 11:05:00) [4]И всё же как?
GuAV (2004-09-01 22:47:00) [5]
> Но ведь работает!
А таки да. Дело в том, что
> открат или закрыт
и
> всунут или высунут!!!!
разнеые вопросы.
открат или закрыт - см Anatoly Podgoretsky © (31.08.04 21:44) [10]
всунут или высунут - см OSokin © (31.08.04 20:15) [8]
OSokin (2004-09-01 20:00:00) [6]GuAV © (31.08.04 21:14) [9]
Но ведь работает!
Anatoly Podgoretsky (2004-08-31 22:04:00) [7]Про физические говорю
GuAV (2004-08-31 21:55:00) [8]
> Для начала не мешало бы опрелеоить - а есть ли дверца (лоток)?
У "виртуального" нет и его можно и всунуть и выунуть. Так что проверять наличие не обязательно.
Anatoly Podgoretsky (2004-08-31 21:44:00) [9]Для начала не мешало бы опрелеоить - а есть ли дверца (лоток)?
GuAV (2004-08-31 21:14:00) [10]
> то диска в приводе нет.
не сюда, надо
> определить всунут или высунут!!!!
OSokin (2004-08-31 20:15:00) [11]Чтобы проверить, находится ли диск в приводе, нужно использовать функцию "GetDiskFreeSpace(pchar(disk+':\'),a,a,a,a);", где "disk" - это название диска, а "a" - переменная типа cardinal. Если функция возвращает false, то диска в приводе нет.
[lamer]Barmaglot (2004-08-03 17:32:00) [12]то KSergey © (02.08.04 18:58) [6]
Можно, но под НТ... Пример был на этом сайте...Некоторые говорят что у них и под 98 работает, незнаю врать не буду...
KSergey (2004-08-02 18:58:00) [13]> ASd (30.07.04 20:33)
Ответ "НЕЛЬЗЯ!" есть во всех FAQ, в том числе и на этом сайте (во всяком случае в некогда обсуждаемом)
grom (2004-08-02 18:41:00) [14]определить состояние лотка у CD
если на лотке есть диск = if GetVolumeInformation()then ...
если на лотке нет диска никак скорей всего.
michael (2004-08-02 14:58:00) [15]If mciSendCommand(mp.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED,0) then
Это работать врят-ли будет.
Кириешки (2004-07-30 20:56:00) [16]>ASd (30.07.04 20:45) [2]
Орать не надо. If mciSendCommand(mp.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED,0) then
Ну или что-то в этом духе. Мозги есть? Додумай сам.
ASd (2004-07-30 20:45:00) [17]Читай внимательнее! не отрыть и закрыть а определить всунут или высунут!!!!
Кириешки (2004-07-30 20:42:00) [18]Uses MMSystem.
это для мозгов
{mciSendString('Set cdaudio Door Open Wait', nil, 0, handle);
mciSendCommand(mp.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED,0);}
Для закрытия CD-ROMа:
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
Для открытия CD-ROMа:
mciSendString('Set cdaudio door open wait', nil, 0, handle);