![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
Как узнать, открыт или закрыт CD ROM? Весь Инет пролазил, не нашёл решения работающего.
![]() |
|||
|
||||
Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
А вроде нет стандартной функции...
![]() Нужно изобретать велосипед, зависящий от задания в целом. |
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 19 |
Злоумышленник, плохо искал, зри в корень: http://www.btc.lancom.ru/programming/base/is_cdrom_open.html
![]() Добавлено @ 17:27 Zero, велосипед давно изобретен ![]() -------------------- ...все в мире относительно |
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
Nicholas_S, я искал хорошо, и твой пример видел 1,5 года назад. Он на закрытый без диска CD ROM говорит "Message: open". Я не знаю, почему Инет завален копиями один-в-один неправильного решения проблемы.
|
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
|
|||
|
||||
Nicholas_S |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 12.10.2006 Где: Санкт-Петербург Репутация: 1 Всего: 19 |
Ну и прально.
![]() Злоумышленник, вообщем, в курсе, что данный метод не корректно отрабатывает, но это единственное простое решение (хотя и работающее наполовину). Проблема о статусе открытого лотка, как ты уже сказал, обсуждалась очень давно и с тех пор ничего нового не придумали, по крайней мере я не встречал готовых простых решений. Существуют несколько способов, которые позволяют определить статус CD, но они достаточно громоздкие и требуют спец. библиотек и знаний, например, можно попробовать узнать статус через спец. библиотеку для SCSI. Но, опять же, насколько я знаю, и он работает не во всех случаях. Так же ты можешь попробовать отслеживать изменение статуса через WM_DEVICECHANGE, может быть поможет. -------------------- ...все в мире относительно |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 1 Всего: 259 |
Злоумышленник, Zero прав. Однозначного решения нет.
Я в свое время когда с таким сталкивался пришел просто к закрыванию CD-ромчика чтобы привести вопрос к однозначному результату - типа "теперь он однозначно закрыт", а дальше уже плясал от этого. |
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
Nicholas_S,
Поможет... наполовину. Если в реестре отключить автозапуск CD, то при вставке-удалении диска данное сообщение не посылается системой. ![]() smartov, Программисты Alcohol 120% решили. Видимо, требуется обращение напрямую к аппаратуре или к драйверам... |
|||
|
||||
ArtemRubtsov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 12.11.2006 Репутация: нет Всего: нет |
угу требуется изучать SCSI_PASS_THROUGH и скази команды
|
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
кто-нить, дайте хоть ссылку, где можно почитать о программировании CD ROM'ов
|
|||
|
||||
RST8 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
Можно поинтересоваться для чего такое нужно?
--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
RST8, довожу до ума программу-открывалку, конфета из неё получается только если знать, открыт или закрыт ROM. А что, это тебе поможет ответить на вопрос
![]() Это сообщение отредактировал(а) Злоумышленник - 19.2.2007, 09:40 |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Наоборот, это поможет решить стоит ли отвечать на него. |
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
||||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
Nicholas_S, сейчас не поленился, закачал новую DRKB 3, там этот неправильный совет приведён. Учитывая, что на винграде эта тема в единственном числе, то непонятно, как автор Vit это пропустил. Причём на delphikingdom это тоже обсуждалось, и тоже написано, что решение неправильное. |
|||
|
||||
RST8 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 8.12.2004 Репутация: 1 Всего: 1 |
Нет, конечно. У меня на клавиатуре есть такая кнопка, так вот одно нажатие открывает, последующее закрывает, удерживание в нажатом состоянии выводит диалог выбора cd привода. Но я по старинке открываю кнопкой на самом приводе, а закрываю толкнув лоток. Вот еслибы кнопкой еще и диск в лоток клался, то тогда от такой программы толк бы был, а так, есть ли смысл? --------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной! |
|||
|
||||
Злоумышленник |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.9.2006 Репутация: -1 Всего: -3 |
RST8, а у меня нет такой клавы, а системник стоит почти сзади и кнопку открытия приходится нащупывать. К тому же я не люблю трогать системник лишний раз, чтобы он не замусоливался как у моеих всех знакомых. А прога висит в трэе и вид иконки зависит, есть ли в дисководе что-нить или нет, и в каком и пишет в подсказке заголовок диска ( их 2) - довольно удобно. Просьба не отвечать на этот пост.
|
|||
|
||||
Electrik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.2.2008 Репутация: нет Всего: нет |
Народ є рішення але воно не всім підійде, смисл такий відправляєте сд-рому команду закрити якщо проходить 0 мілісекунд то закритий якщо деяка н - кількість значить він закрився Якщо треба код напишіть викину
|
|||
|
||||
Lau |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.2.2008 Репутация: нет Всего: нет |
Плохо знаю украинский но смысл понял, так вот то что советуешь надо тестировать
0 мс один проход занимает редко, а иногда если комп что-то делает может и по 2-3 секунды выполнять. Так что увы, не работает сей метод. |
||||
|
|||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 1 Всего: 259 |
Lau, зато можно будет исходить из того что "теперь CD-ROM уж точно закрыт"
![]() |
|||
|
||||
Lau |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 28.2.2008 Репутация: нет Всего: нет |
Задача - Есть девайс на основе PC который нужно кормить DVD дисками, как диск вставили и задвинули с ним нужно что нибудь сделать, записать например что нибудь.
Уточнение: нотификация о монтировании диска от виндов приходит не стабильно, следовательно ее нужно исключить. А теперь сделать софварную конопку которая выдивагает лоток и задвигает лоток (после завдижения сразу чего нибудь начинает делать) И наконец различные ситуации 1. Лоток задвинут, диск внутри, идет запись нажали Eject и пользователь чего то сделал с диском, вынул или оставил нам не ведомо. 2. Дальше он может прессануть сам лоток он успешно задвиниться, нотификация не придет, состояние трэя потеряно, мы не знаем открыт ли он или закрыт. 3. Можно нажать конпку Insert/Eject еще раз скажем сработает Insert(мы не знаем состояния лотка и делаем на отъ@бись) а в реальности лоток был уже задвинут ручками, пользователь ждал в реальности Eject - косяк. Вот как с этим боротся пока не ясно ... напрягать драйверописателей наших неохота, напрягать железячников чтоб они устанавливали на дейвайс датчики и хардварно мне сообщали тоже, пока ищу софварный путь. |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 1 Всего: 259 |
Помнится с подобным долго бился. У меня правда задачи попроще были. Решения кроме "задвинуть, подождать 3 сек, и плясать от того, что задвинут" не нашел.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |