Помощь - Поиск - Пользователи - Календарь
Полная версия: Как узнать, открыта ли дверца Cd-rom?
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
CMOS
Как узнать, открыта ли дверца CD-ROM?
Как узнать сирийный номер диска?
Как открыть/закрыть дверцу? Я знаю такой спсоб:

MciSendString('Set cdaudio door closed', 0,0,form1.handle);

MciSendString('Set cdaudio door open', 0,0,form1.handle);


Можно ли как-нибудь еще?
Какие еще значения первого параметра в функции MciSendString существуют?
volvo
Цитата(CMOS @ 7.07.05 21:11)
Какие еще значения первого параметра в функции MciSendString существуют?

Вот список только по первому слову:
Цитата
break
capability
capture
close
configure
copy
cue
cut
delete
escape
freeze
index
info
list
load
mark
monitor
open
paste
pause
play
put
quality
realize
record
reserve
restore
resume
save
seek
set
setaudio
settimecode
settuner
setvideo
signal
spin
status
step
stop
sysinfo
undo
unfreeze
update
where
window

MSDN: Multimedia Command Strings, если хочешь точнее...
corazon
а можно ли встроить свою опцию в контекстное меню? например у сидюка есть "открыть" (извлечь), а добавить свою "закрыть" ??
CMOS
Volvo, спасибо за подсказку. smile.gif Я и не знал что это есть в MSDN.

corazon, я не понял что ты предлагаешь. Создать новый метод? Все равно придется выходить на winmm.dll.


Повторяю главные вопросы:

Как узнать, открыта ли дверца CD-ROM?
Как узнать сирийный номер диска?
volvo
Вот как узнать серийный номер диска: http://proging.h1.ru/articles/system/s23.htm

Насчет
Цитата
узнать, открыта ли дверца CD-ROM
- не думаю, что это возможно.

Хотя попробуй воспользоваться
DeviceIoControl( CD_Handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, ...);
, может что-нибудь и получится... ;)
CMOS
Невозможно?
А как же тогда Nero DriveSpeed? Да даже стандартный виндозовский лазерный проигрыватель (даже из Win 3.1) когда дверца закрыта - открывает, когда открыта - закрывает. Как он это делает?
volvo
CMOS, ты бы с Nero не равнялся (с MicroSoft тем более)... Кроме того, не надо читать ответы через строчку, я сказал, куда надо копать. Пробовал?
Archon
Открывать-закрывать дверцу ты умеешь. Что ещё надо? Если тебе нужно, чтобы дверца была открыта - открываешь (если уже открыта - просто ничего не произойдёт). И наоборот.
Malice
Цитата(CMOS @ 24.07.05 21:01)
Да даже стандартный виндозовский лазерный проигрыватель (даже из Win 3.1) когда дверца закрыта - открывает, когда открыта - закрывает. Как он это делает?

Сейчас посмотрел в CDPlayer.exe из win98. При нажатии на Eject там примерно так:
Код
if mciSendCommandA ( MCI_STATUS, MCi_Status_Item)=$212 then
mciSendCommandA ( MCI_SET, MCI_SET_DOOR_CLOSED) else
mciSendCommandA ( MCI_SET, MCI_SET_DOOR_OPEN);
CMOS
Цитата
CMOS, ты бы с Nero не равнялся (с MicroSoft тем более)


volvo, не боги горшки обжигают.
Насчет DeviceIoControl - там слишком много параметров. Откуда мне их знать?Должен быть путь проще.

Malice, ты забыл еще два параметра в этих функциях. Пробовал ставить их нулями. Обе эти функции вернули $101 (257) в не зависимости от состояния сидюка.
volvo
Цитата(CMOS @ 13.08.05 21:00)
Насчет DeviceIoControl - там слишком много параметров. Откуда мне их знать? Должен быть путь проще.

angry.gif Специально для CMOS MicroSoft забыла оставить более простой способ определения закрытости дверцы !!! Срочно обращайся в Гаагу !!!

Цитата(CMOS @ 13.08.05 21:00)
Откуда мне их знать?
Откуда знать?
msdn.microsoft.com - или "не царское это дело"?

Если найдешь функцию WinAPI без параметров, которая проверяет открыт ли лоток, сообщи обязательно.
Malice
Цитата(CMOS @ 13.08.05 21:00)
Malice, ты забыл еще два параметра в этих функциях.
Я не зыбыл, я же не в исходниках смотрел smile.gif Написал принцип.

Цитата(CMOS @ 13.08.05 21:00)
Пробовал ставить их нулями. Обе эти функции вернули $101 (257) в не зависимости от состояния сидюка.

У меня CDPlayer выдвигает дверь только если там диск есть, иначе не хочет. Мож у тебя тоже самое. Ты сам на него кивнул, я сказал как там сделано, разбирайся smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.