![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать состояние лотка CD-ROM?
BPK © (2003-02-17 23:00:00)Открыть и закрыть дверцу CD-ROM это хорошо. Таких советов навалом в Сети (причём подавляющее большинство - с использованием MCI, а не WinAPI).
Только вот никто не может сказать, как узнать, открыта ли в данный момент эта дверца.
Беспечный Ангел (2003-02-18 15:08:00) [41]
> или использовать Delphi 8, в которой по умолчанию включена
> поддержка этих функций
Но ведь в ранних версиях делфи можно дать комманду DELPHI_8.FUNCTION:=ENABLE; и не надо никаких сервис-паков!!! Вот тока в 9 делфи это почему-то не работает... ;)
Мне вот еще интересно, какое значение вернет функция COFFEE_CUP_HOLDER_GET_CUP_GEOMETRY для пепельницы, чашки с/без кофе и для пожеванных дисков... ;)
AGGRESSOR (2003-02-18 13:18:00) [42]
> Zhenka ©
Ну вы, блин, даете! :)
Кстати, не забудь написать, что для того, чтобы воспользоваться этими замечательными функциями, нужно установить сервис-пак для ОС, доступный по адресу www.microsoft.com/support/dummy.html
(для русскоязычной винды www.microsoft.ru/files/chainik.asp) или использовать Delphi 8, в которой по умолчанию включена поддержка этих функций.
Zhenka (2003-02-18 09:45:00) [43]ещё вот
======
А как определить есть ли на выдвинутом лотке диск или лоток
пустой?
Ответ:
Довольно сложная операция. На помощь придет функция
CoffeeCupHolderInfo(driveLetter: char; info: word): word; Ее параметры
аналогичны параметрам TrayDeviceInfo(). Передав в качестве info
значение COFFEE_CUP_HOLDER_GET_CUP_MASS, вы получите в результате массу положенного на лоток груза.
Если на лотке лежит диск то вы получите значение больше 0.
Этот метод обнаружит не только диск но и любую другую нагрузку на лоток.
Если же необходимо точно утверждать что лежит именно диск, пользуйтесь info COFFEE_CUP_HOLDER_GET_CUP_GEOMETRY. В качестве результата будет получен уникальный идентификатор формы объекта, лежащего на лотке. Для стандартных CD-дисков он обычно равен 876 - 891.
Однако если на лотке лежит не стандартный диск (погнутый или немного поцарапанный) то вы получите совершенно другой результат функции и поэтому этот метод тоже на 100% не гарантирует точность распознавания диска на лотке.
Zhenka (2003-02-18 09:32:00) [44]Пользуйтесь API - функцией
TrayDeviceInfo(driveLetter: char; info: word): word;
в качестве параметров передавайте
driveLetter - буква диска,
info - TRAY_DEVICE_INFO_GET_TRAY_OPEN_STATUS.
Возвращаемые значения: 0 - закрыт, 1 - открыт, 2 - лоток
заело, 3 - лоток сломан.
===========================
А как узнать есть лоток или нет?
Ответ: Та же функция TrayDeviceInfo() (см. выше) возвратит
код ошибки
ERROR_TRAY_DEVICE_NO_TRAY при попытке применения к
устройству CD-ROM и др. без лотка.