Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.61 MB
Время: 0.028 c
14-24234
Alx2
2002-07-12 10:39
2002.08.08
Справочная система из html


1-24108
Soler
2002-07-26 17:30
2002.08.08
Как создать Label


1-23967
Kurt
2002-07-25 10:57
2002.08.08
Главная форма приложения! Как ее менять? Плиз, помогите!


3-23885
First_May
2002-07-16 10:11
2002.08.08
Прерывание запроса


1-24051
Folk
2002-07-25 14:54
2002.08.08
Где в Интернете можно скачать звуки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский