Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить открыт или закрыт лоток CD-ROM? [D5]


Deus ©   (2002-04-03 10:30:00) 

Вообще, возможно такое или нет? Я имею ввиду, определить из программы, "остроумных" ответов "посмотри на CD-ROM" мне не надо...


Anatoly Podgoretsky   (2002-05-26 13:31:00) [1]

veZuk © (24.05.02 13:28)
Проверил, нет кнопки, а на тех где есть, например CDPlayer не определяет состояния, да и откуда бы, если такой информации нет


Song   (2002-05-26 13:19:00) [2]

Смотрите в MSDN"е команду MCISendString()
один из её параметров - это и есть текстовая строка посылаемая у-ву. В хэлпе ничего нет, а вот в MSDN полный перечень.


Paromoshka   (2002-05-26 12:02:00) [3]

Song, распиши по подробней эту команду, а то я ничего подобного в MSDN не нашел.


veZuk   (2002-05-24 13:28:00) [4]

Хм... WMediaPlayer закрывает и открывает лоток сам одной кнопкой :-)


Song   (2002-05-23 14:58:00) [5]

Смотрите в MSDN команду status


Paromoshka   (2002-05-23 14:48:00) [6]

Я хочу продолжить Форум более точным вопросом. Я бы хотел написать программу которая следить за CD-ROM и если он открыт, то подаются звук и он через какое то время сам закрывается. Все конечно здорово, но не возможно определить открыт или закрыт лоток. Во всех форумах совет один или, не стоит оставлять лоток открытым, или
uses mmsystem
mcisendstring("set cdaudio door open wait",0,nil,handle)
Может кто наставит на путь истеный!!!
За ранее спасибо.


Song   (2002-05-19 09:35:00) [7]

Автору вопроса надо послать команду status, она возвращает состояние устройства. Подоробности в msdn"е.


SerGa   (2002-05-19 01:58:00) [8]

Да, действительно, "позор на мои седины"! Перепутал дверцу с лотком!
Код - работает! Открывает лоток.
Но автору вопроса мне ответить нечего. :((


Anatoly Podgoretsky   (2002-05-18 19:46:00) [9]

Все в порядке, у меня же не один, но тот который не имеет дверцы просто вышвырнет диск, те что с картриждами не знаю.
Код кто нибудь проверил, работает?


SerGa   (2002-05-18 19:32:00) [10]

2 Anatoly Podgoretsky
А что же случилось с Вашим прежним CDROM? Неужели сломался? :(


Song   (2002-05-18 10:12:00) [11]

Определить можно через MMSystem. Какие проблемы?


Anatoly Podgoretsky   (2002-05-17 23:43:00) [12]

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


AlexRya   (2002-05-17 23:35:00) [13]

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

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 и она открывает его)


AlexKniga   (2002-04-26 13:09:00) [14]

Повторяю:
Задача решение имеет.
Могу намылить исходники ДОСовской проги, которая открывала/закрывала дверцу с помощь одной кнопки.
И даже умела блокировать открытие дверцы с помощью кнопки на CD-приводе.
Здесь как то обсуждалось как заблокировать открытие дверцы с помощью кнопки на CD-приводе.
На Win32 предлогалось заклеить сию кнопку скотчем :))).



Anatoly Podgoretsky   (2002-04-26 12:55:00) [15]

Ты можешь только определить есть ли диск в дисководе, состояние открыт также равно отсутствию диска.


frope   (2002-04-26 09:16:00) [16]

uses mmsystem
mcisendstring("set cdaudio door open wait",0,nil,handle)


handra   (2002-04-05 14:31:00) [17]

Walker ©> Не вернет
Deus> Вообще средствами MCI невозможно во всех случаях определить открыт или закрыт лоток привода (например, закрыт - но нет носителя + закрывался "руками").
С подобной проблемой я сталкивался, решалось все так:
- при старте программы лоток всегда открывался (как предложение вставить диск)
- далее открытие/закрытие софтварно меняло некий флаг
- опять-таки точность состояния привода определялась не всегда

P.S. К сожалению, исходника проекта канули в небытие, а более детально что-то проверить - нет времени...


Walker   (2002-04-05 03:22:00) [18]

Отвечу вопросом.
Допустим ОН открыт, ты нажимаешь на кнопку ОТКРЫТЬ (то есть пытаешься открыть открытый). Разве функция, которая пытается открыть не вернёт КОД ОШИБКИ - мол не могу открыть???


Deus   (2002-04-03 13:53:00) [19]

Я хочу на кнопку в программе повесить ф-ю открытия и закрытия лотка.
Сейчас 2 кнопки - одна на открытие, другая - закрытие. Это не очень красиво. Если бы я мог узнать открыт лоток или нет - сделал бы одну кнопку....


Anatoly Podgoretsky   (2002-04-03 13:49:00) [20]

Зачем?


Наверх

Титульная страница Поиск, карта сайта Написать письмо