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

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

состояние лотка у 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);


Наверх

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