Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыт или закрыт лоток CD ROM'а 
:(
    Опции темы
Злоумышленник
Дата 21.10.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



Как узнать, открыт или закрыт CD ROM? Весь Инет пролазил, не нашёл решения работающего. smile 
PM   Вверх
Zero
Дата 21.10.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



А вроде нет стандартной функции... smile 
Нужно изобретать велосипед, зависящий от задания в целом.
PM MAIL ICQ   Вверх
Nicholas_S
Дата 21.10.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Злоумышленник, плохо искал, зри в корень: http://www.btc.lancom.ru/programming/base/is_cdrom_open.html
 smile

Добавлено @ 17:27 
Zero, велосипед давно изобретен smile 


--------------------
...все в мире относительно
PM   Вверх
Злоумышленник
Дата 21.10.2006, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



Nicholas_S, я искал хорошо, и твой пример видел 1,5 года назад. Он на закрытый без диска CD ROM говорит "Message: open". Я не знаю, почему Инет завален копиями один-в-один неправильного решения проблемы.
PM   Вверх
Snowy
Дата 29.10.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484




M
Snowy
Все посты, не имеющие отношения к теме, удалены.

PM MAIL   Вверх
Nicholas_S
Дата 30.10.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Ну и прально.  smile 
Злоумышленник, вообщем, в курсе, что данный метод не корректно отрабатывает, но это единственное простое решение (хотя и работающее наполовину). Проблема о статусе открытого лотка, как ты уже сказал, обсуждалась очень давно и с тех пор ничего нового не придумали, по крайней мере я не встречал готовых простых решений. Существуют несколько способов, которые позволяют определить статус CD, но они достаточно громоздкие и требуют спец. библиотек и знаний, например, можно попробовать узнать статус через спец. библиотеку для SCSI. Но, опять же, насколько я знаю, и он работает не во всех случаях.
  Так же ты можешь попробовать отслеживать изменение статуса через WM_DEVICECHANGE, может быть поможет.


--------------------
...все в мире относительно
PM   Вверх
smartov
Дата 30.10.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



Злоумышленник, Zero прав. Однозначного решения нет.
Я в свое время когда с таким сталкивался пришел просто к закрыванию CD-ромчика чтобы привести вопрос к однозначному результату - типа "теперь он однозначно закрыт",  а дальше уже плясал от этого.
PM MAIL   Вверх
Злоумышленник
Дата 19.11.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



Nicholas_S
Цитата(Nicholas_S @  30.10.2006,  12:01 Найти цитируемый пост)
Так же ты можешь попробовать отслеживать изменение статуса через WM_DEVICECHANGE, может быть поможет

Поможет... наполовину. Если в реестре отключить автозапуск CD, то при вставке-удалении диска данное сообщение не посылается системой. smile 

smartov
Цитата(smartov @  30.10.2006,  12:24 Найти цитируемый пост)
Однозначного решения нет

Программисты Alcohol 120% решили. Видимо, требуется обращение напрямую к аппаратуре или к драйверам... 

PM   Вверх
ArtemRubtsov
Дата 20.11.2006, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



угу требуется изучать SCSI_PASS_THROUGH и скази команды
PM MAIL   Вверх
Злоумышленник
Дата 17.2.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



кто-нить, дайте хоть ссылку, где можно почитать о программировании CD ROM'ов
PM   Вверх
RST8
Дата 18.2.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 8.12.2004

Репутация: 1
Всего: 1



Можно поинтересоваться для чего такое нужно?
--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной!
PM   Вверх
Злоумышленник
Дата 19.2.2007, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



RST8, довожу до ума программу-открывалку, конфета из неё получается только если знать, открыт или закрыт ROM. А что, это тебе поможет ответить на вопрос  smile ? 

Это сообщение отредактировал(а) Злоумышленник - 19.2.2007, 09:40
PM   Вверх
Yanis
Дата 19.2.2007, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Злоумышленник @  19.2.2007,  10:38 Найти цитируемый пост)
А что, это тебе поможет ответить на вопрос?

Наоборот, это поможет решить стоит ли отвечать на него.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Злоумышленник
Дата 20.2.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



Цитата(Yanis @  19.2.2007,  11:10 Найти цитируемый пост)
Наоборот, это поможет решить стоит ли отвечать на него.

Yanis, стоит, если знаешь путь решения проблемы. В противном случае лучше помолчать.

Это сообщение отредактировал(а) Злоумышленник - 3.3.2007, 09:36
PM   Вверх
Злоумышленник
Дата 3.3.2007, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



Цитата(Nicholas_S @  30.10.2006,  12:01 Найти цитируемый пост)
Так же ты можешь попробовать отслеживать изменение статуса через WM_DEVICECHANGE, может быть поможет.


Nicholas_S,  сейчас не поленился, закачал новую DRKB 3, там этот неправильный совет приведён. Учитывая, что на винграде эта тема в единственном числе, то непонятно, как автор Vit это пропустил. Причём на delphikingdom это тоже обсуждалось, и тоже написано, что решение неправильное.
PM   Вверх
RST8
Дата 3.3.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 8.12.2004

Репутация: 1
Всего: 1



Цитата(Злоумышленник @  19.2.2007,  09:38 Найти цитируемый пост)
А что, это тебе поможет ответить на вопрос  smile ? 


    Нет, конечно. У меня на клавиатуре есть такая кнопка, так вот одно нажатие открывает, последующее закрывает, удерживание в нажатом состоянии выводит диалог выбора cd привода. Но я по старинке открываю кнопкой на самом приводе, а закрываю толкнув лоток. Вот еслибы кнопкой еще и диск в лоток клался, то тогда от такой программы толк бы был, а так, есть ли смысл?
--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной!
PM   Вверх
Злоумышленник
Дата 3.3.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.9.2006

Репутация: -1
Всего: -3



RST8, а у меня нет такой клавы, а системник стоит почти сзади и кнопку открытия приходится нащупывать. К тому же я не люблю трогать системник лишний раз, чтобы он не замусоливался как у моеих всех знакомых. А прога висит в трэе и вид иконки зависит, есть ли в дисководе что-нить или нет, и в каком и пишет в подсказке заголовок диска ( их 2) - довольно удобно. Просьба не отвечать на этот пост.
PM   Вверх
Electrik
Дата 27.2.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.2.2008

Репутация: нет
Всего: нет



Народ є рішення але воно не всім підійде, смисл такий відправляєте сд-рому команду закрити якщо проходить 0 мілісекунд то закритий якщо деяка н - кількість значить він закрився Якщо треба код напишіть викину 
PM MAIL   Вверх
Lau
Дата 28.2.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(Electrik @ 27.2.2008,  12:22)
Народ є рішення але воно не всім підійде, смисл такий відправляєте сд-рому команду закрити якщо проходить 0 мілісекунд то закритий якщо деяка н - кількість значить він закрився Якщо треба код напишіть викину

Плохо знаю украинский но смысл понял, так вот то что советуешь надо тестировать
Код

int main(int argc, char* argv[])
{
    HANDLE m_hDevice = NULL;
    BOOL dicresult = TRUE;
    DWORD dwDummy;
    DWORD i,Tick_Count = 0;

    
    m_hDevice = CreateFile( "\\\\.\\Z:",
        GENERIC_READ|GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        0,
        NULL );
    
    
     for (i=0; i<100000; i++)
     {
         Tick_Count = GetTickCount();
         dicresult = DeviceIoControl(m_hDevice, IOCTL_STORAGE_LOAD_MEDIA, NULL, 
             0, NULL, 0, &dwDummy, NULL);
         Tick_Count =  GetTickCount() - Tick_Count;
         if (Tick_Count>100)
         {
             printf("TickCount=%d\n",Tick_Count, GetLastError());
         }
         Sleep(10);
     }



    if (INVALID_HANDLE_VALUE != m_hDevice) 
    {
        CloseHandle(m_hDevice);
    }
    
    return 0;
}

0 мс один проход занимает редко, а иногда если комп что-то делает может и по 2-3 секунды выполнять. Так что увы, не работает сей метод.
PM MAIL   Вверх
smartov
Дата 28.2.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



Lau, зато можно будет исходить из того что "теперь CD-ROM уж точно закрыт" smile
PM MAIL   Вверх
Lau
Дата 28.2.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Задача - Есть девайс на основе PC который нужно кормить DVD дисками, как диск вставили и задвинули с ним нужно что нибудь сделать, записать например что нибудь.
Уточнение: нотификация о монтировании диска от виндов приходит не стабильно, следовательно ее нужно исключить.
А теперь сделать софварную конопку которая выдивагает лоток и задвигает лоток (после завдижения сразу чего нибудь начинает делать)
И наконец различные ситуации
1. Лоток задвинут, диск внутри, идет запись нажали Eject и пользователь чего то сделал с диском, вынул или оставил нам не ведомо.
2. Дальше он может прессануть сам лоток он успешно задвиниться, нотификация не придет, состояние трэя потеряно, мы не знаем открыт ли он или закрыт.
3. Можно нажать конпку Insert/Eject еще раз скажем сработает Insert(мы не знаем состояния лотка и делаем на отъ@бись) а в реальности лоток был уже задвинут ручками, пользователь ждал в реальности Eject - косяк.
Вот как с этим боротся пока не ясно ... напрягать драйверописателей наших неохота, напрягать железячников чтоб они устанавливали на дейвайс датчики и хардварно мне сообщали тоже, пока ищу софварный путь.
PM MAIL   Вверх
smartov
Дата 28.2.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



Помнится с подобным долго бился. У меня правда задачи попроще были. Решения кроме "задвинуть, подождать 3 сек, и плясать от того, что задвинут" не нашел.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1221 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.