| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Открыт или закрыт лоток CD ROM'а |
| Автор: Злоумышленник 21.10.2006, 15:59 |
| Как узнать, открыт или закрыт CD ROM? Весь Инет пролазил, не нашёл решения работающего. |
| Автор: Zero 21.10.2006, 17:14 |
| А вроде нет стандартной функции... Нужно изобретать велосипед, зависящий от задания в целом. |
| Автор: Nicholas_S 21.10.2006, 17:27 |
| Злоумышленник, плохо искал, зри в корень: http://www.btc.lancom.ru/programming/base/is_cdrom_open.html Добавлено @ 17:27 Zero, велосипед давно изобретен |
| Автор: Злоумышленник 21.10.2006, 20:33 |
| Nicholas_S, я искал хорошо, и твой пример видел 1,5 года назад. Он на закрытый без диска CD ROM говорит "Message: open". Я не знаю, почему Инет завален копиями один-в-один неправильного решения проблемы. |
| Автор: Snowy 29.10.2006, 21:58 | ||
|
| Автор: Nicholas_S 30.10.2006, 12:01 |
| Ну и прально. Злоумышленник, вообщем, в курсе, что данный метод не корректно отрабатывает, но это единственное простое решение (хотя и работающее наполовину). Проблема о статусе открытого лотка, как ты уже сказал, обсуждалась очень давно и с тех пор ничего нового не придумали, по крайней мере я не встречал готовых простых решений. Существуют несколько способов, которые позволяют определить статус CD, но они достаточно громоздкие и требуют спец. библиотек и знаний, например, можно попробовать узнать статус через спец. библиотеку для SCSI. Но, опять же, насколько я знаю, и он работает не во всех случаях. Так же ты можешь попробовать отслеживать изменение статуса через WM_DEVICECHANGE, может быть поможет. |
| Автор: smartov 30.10.2006, 12:24 |
| Злоумышленник, Zero прав. Однозначного решения нет. Я в свое время когда с таким сталкивался пришел просто к закрыванию CD-ромчика чтобы привести вопрос к однозначному результату - типа "теперь он однозначно закрыт", а дальше уже плясал от этого. |
| Автор: ArtemRubtsov 20.11.2006, 06:42 |
| угу требуется изучать SCSI_PASS_THROUGH и скази команды |
| Автор: Злоумышленник 17.2.2007, 19:49 |
| кто-нить, дайте хоть ссылку, где можно почитать о программировании CD ROM'ов |
| Автор: RST8 18.2.2007, 23:54 |
| Можно поинтересоваться для чего такое нужно? |
| Автор: Злоумышленник 19.2.2007, 09:38 |
| RST8, довожу до ума программу-открывалку, конфета из неё получается только если знать, открыт или закрыт ROM. А что, это тебе поможет ответить на вопрос |
| Автор: Yanis 19.2.2007, 11:10 |
Наоборот, это поможет решить стоит ли отвечать на него. |
| Автор: Злоумышленник 20.2.2007, 18:33 |
Yanis, стоит, если знаешь путь решения проблемы. В противном случае лучше помолчать. |
| Автор: Злоумышленник 3.3.2007, 09:41 | ||
Nicholas_S, сейчас не поленился, закачал новую DRKB 3, там этот неправильный совет приведён. Учитывая, что на винграде эта тема в единственном числе, то непонятно, как автор Vit это пропустил. Причём на delphikingdom это тоже обсуждалось, и тоже написано, что решение неправильное. |
| Автор: RST8 3.3.2007, 13:24 |
Нет, конечно. У меня на клавиатуре есть такая кнопка, так вот одно нажатие открывает, последующее закрывает, удерживание в нажатом состоянии выводит диалог выбора cd привода. Но я по старинке открываю кнопкой на самом приводе, а закрываю толкнув лоток. Вот еслибы кнопкой еще и диск в лоток клался, то тогда от такой программы толк бы был, а так, есть ли смысл? |
| Автор: Злоумышленник 3.3.2007, 19:39 |
| RST8, а у меня нет такой клавы, а системник стоит почти сзади и кнопку открытия приходится нащупывать. К тому же я не люблю трогать системник лишний раз, чтобы он не замусоливался как у моеих всех знакомых. А прога висит в трэе и вид иконки зависит, есть ли в дисководе что-нить или нет, и в каком и пишет в подсказке заголовок диска ( их 2) - довольно удобно. Просьба не отвечать на этот пост. |
| Автор: Electrik 27.2.2008, 12:22 |
| Народ є рішення але воно не всім підійде, смисл такий відправляєте сд-рому команду закрити якщо проходить 0 мілісекунд то закритий якщо деяка н - кількість значить він закрився Якщо треба код напишіть викину |
| Автор: Lau 28.2.2008, 16:44 | ||||
Плохо знаю украинский но смысл понял, так вот то что советуешь надо тестировать
0 мс один проход занимает редко, а иногда если комп что-то делает может и по 2-3 секунды выполнять. Так что увы, не работает сей метод. |
| Автор: smartov 28.2.2008, 16:58 |
| Lau, зато можно будет исходить из того что "теперь CD-ROM уж точно закрыт" |
| Автор: Lau 28.2.2008, 17:18 |
| Задача - Есть девайс на основе PC который нужно кормить DVD дисками, как диск вставили и задвинули с ним нужно что нибудь сделать, записать например что нибудь. Уточнение: нотификация о монтировании диска от виндов приходит не стабильно, следовательно ее нужно исключить. А теперь сделать софварную конопку которая выдивагает лоток и задвигает лоток (после завдижения сразу чего нибудь начинает делать) И наконец различные ситуации 1. Лоток задвинут, диск внутри, идет запись нажали Eject и пользователь чего то сделал с диском, вынул или оставил нам не ведомо. 2. Дальше он может прессануть сам лоток он успешно задвиниться, нотификация не придет, состояние трэя потеряно, мы не знаем открыт ли он или закрыт. 3. Можно нажать конпку Insert/Eject еще раз скажем сработает Insert(мы не знаем состояния лотка и делаем на отъ@бись) а в реальности лоток был уже задвинут ручками, пользователь ждал в реальности Eject - косяк. Вот как с этим боротся пока не ясно ... напрягать драйверописателей наших неохота, напрягать железячников чтоб они устанавливали на дейвайс датчики и хардварно мне сообщали тоже, пока ищу софварный путь. |
| Автор: smartov 28.2.2008, 19:34 |
| Помнится с подобным долго бился. У меня правда задачи попроще были. Решения кроме "задвинуть, подождать 3 сек, и плясать от того, что задвинут" не нашел. |