Форум: "Система";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизКак определить открыт или закрыт лоток CD-ROM? Найти похожие ветки
← →
Deus (2002-04-03 10:30) [0]Вообще, возможно такое или нет? Я имею ввиду, определить из программы, "остроумных" ответов "посмотри на CD-ROM" мне не надо...
← →
Anatoly Podgoretsky (2002-04-03 13:49) [1]Зачем?
← →
Deus (2002-04-03 13:53) [2]Я хочу на кнопку в программе повесить ф-ю открытия и закрытия лотка.
Сейчас 2 кнопки - одна на открытие, другая - закрытие. Это не очень красиво. Если бы я мог узнать открыт лоток или нет - сделал бы одну кнопку....
← →
Walker (2002-04-05 03:22) [3]Отвечу вопросом.
Допустим ОН открыт, ты нажимаешь на кнопку ОТКРЫТЬ (то есть пытаешься открыть открытый). Разве функция, которая пытается открыть не вернёт КОД ОШИБКИ - мол не могу открыть???
← →
handra (2002-04-05 14:31) [4]Walker ©> Не вернет
Deus> Вообще средствами MCI невозможно во всех случаях определить открыт или закрыт лоток привода (например, закрыт - но нет носителя + закрывался "руками").
С подобной проблемой я сталкивался, решалось все так:
- при старте программы лоток всегда открывался (как предложение вставить диск)
- далее открытие/закрытие софтварно меняло некий флаг
- опять-таки точность состояния привода определялась не всегда
P.S. К сожалению, исходника проекта канули в небытие, а более детально что-то проверить - нет времени...
← →
frope (2002-04-26 09:16) [5]uses mmsystem
mcisendstring("set cdaudio door open wait",0,nil,handle)
← →
Anatoly Podgoretsky (2002-04-26 12:55) [6]Ты можешь только определить есть ли диск в дисководе, состояние открыт также равно отсутствию диска.
← →
AlexKniga (2002-04-26 13:09) [7]Повторяю:
Задача решение имеет.
Могу намылить исходники ДОСовской проги, которая открывала/закрывала дверцу с помощь одной кнопки.
И даже умела блокировать открытие дверцы с помощью кнопки на CD-приводе.
Здесь как то обсуждалось как заблокировать открытие дверцы с помощью кнопки на CD-приводе.
На Win32 предлогалось заклеить сию кнопку скотчем :))).
← →
AlexRya (2002-05-17 23:35) [8]Вот пример, основанный на том, что на выдвижение лотка необходимо время. Конечно не идеальный вариант, но лучше не знаю. У меня работает.
procedure TForm1.Button1Click(Sender: TObject);
Var Time:LongInt;
begin
Time:=GetTickCount;
mciSendString("Set cdaudio Door Open Wait", nil, 0, handle);
If GetTickCount-Time<100 then mciSendString("Set cdaudio Door
Close Wait", nil, 0, handle);
end;
Но за это прошу ответь мне на такой вопрос: как сменить диска, к кторому обращается функция mciSendString (у меня есть виртуальный CD и она открывает его)
← →
Anatoly Podgoretsky (2002-05-17 23:43) [9]procedure EjectCDROM(aLetter : char);
const
AliasName = "MyCoolCdrom";
var s : string;
begin
s := "open " + aLetter + ": type cdaudio alias " + AliasName + aLetter + " shareable wait";
if mciSendString(PChar(s), nil, 0, 0) <> 0 then exit; // fails to open
try
s := "set " + AliasName + aLetter + " door open wait";
mciSendString(PChar(s), nil, 0, 0);
finally
s := "close " + AliasName + aLetter + " wait";
mciSendString(PChar(s), nil, 0, 0);
end;
end;
fido7.ru.delphi FAQ
← →
Song (2002-05-18 10:12) [10]Определить можно через MMSystem. Какие проблемы?
← →
SerGa (2002-05-18 19:32) [11]2 Anatoly Podgoretsky
А что же случилось с Вашим прежним CDROM? Неужели сломался? :(
← →
Anatoly Podgoretsky (2002-05-18 19:46) [12]Все в порядке, у меня же не один, но тот который не имеет дверцы просто вышвырнет диск, те что с картриждами не знаю.
Код кто нибудь проверил, работает?
← →
SerGa (2002-05-19 01:58) [13]Да, действительно, "позор на мои седины"! Перепутал дверцу с лотком!
Код - работает! Открывает лоток.
Но автору вопроса мне ответить нечего. :((
← →
Song (2002-05-19 09:35) [14]Автору вопроса надо послать команду status, она возвращает состояние устройства. Подоробности в msdn"е.
← →
Paromoshka (2002-05-23 14:48) [15]Я хочу продолжить Форум более точным вопросом. Я бы хотел написать программу которая следить за CD-ROM и если он открыт, то подаются звук и он через какое то время сам закрывается. Все конечно здорово, но не возможно определить открыт или закрыт лоток. Во всех форумах совет один или, не стоит оставлять лоток открытым, или
uses mmsystem
mcisendstring("set cdaudio door open wait",0,nil,handle)
Может кто наставит на путь истеный!!!
За ранее спасибо.
← →
Song (2002-05-23 14:58) [16]Смотрите в MSDN команду status
← →
veZuk (2002-05-24 13:28) [17]Хм... WMediaPlayer закрывает и открывает лоток сам одной кнопкой :-)
← →
Paromoshka (2002-05-26 12:02) [18]Song, распиши по подробней эту команду, а то я ничего подобного в MSDN не нашел.
← →
Song (2002-05-26 13:19) [19]Смотрите в MSDN"е команду MCISendString()
один из её параметров - это и есть текстовая строка посылаемая у-ву. В хэлпе ничего нет, а вот в MSDN полный перечень.
← →
Anatoly Podgoretsky (2002-05-26 13:31) [20]veZuk © (24.05.02 13:28)
Проверил, нет кнопки, а на тех где есть, например CDPlayer не определяет состояния, да и откуда бы, если такой информации нет
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c