Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
Как проверит, открыт ли лоток CD-ROM? Найти похожие ветки
← →
Nik_vr © (2005-05-18 23:08) [0]Собственно сабж...
← →
Ученик (2005-05-18 23:25) [1]>Nik_vr © (18.05.05 23:08)
MediaPlayer1.DeviceType := dtCDAudio;
MediaPlayer1.FileName := "?:";
MediaPlayer1.Open;
ShowMessage(IntToStr(Ord(MediaPlayer1.Mode)))
← →
Nik_vr © (2005-05-19 20:12) [2]Во-первых, этот код в любом случае выдает цифру "6".
Во-вторых, мне нужно это сделать на WinAPI, а то с медиа-плэером больно размер вырастет...
← →
kat © (2005-05-19 20:37) [3]из Кулибы:
Для открытия CD-ROM:
mciSendString("Set cdaudio door open wait", nil, 0, handle);
Для закрытия CD-ROM:
mciSendString("Set cdaudio door closed wait", nil, 0, handle);
Nomadic добавляет свой способ открытия CD-ROM:
mciSendCommand(mp.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
Не забудьте включить MMSystem в список используемых модулей (uses).
← →
OSokin © (2005-05-19 21:30) [4]Это уже вечный вопрос - проверить, открыт или закрыт привод... На него нет ответа - можно проверить только, есть диск или нет. Для этого нужно использовать функцию "GetDiskFreeSpace(pchar(disk+":\"),a,a,a,a);", где "disk" - это название диска, а "a" - переменная типа cardinal. Если функция возвращает false, то диска в приводе нет.
← →
Nik_vr © (2005-05-20 12:14) [5]2kat
Спасибо, но это я знал...
2OSokin
Интересно, а как тогда некоторые программы (типа aTools)
открывают/закрывают лоток по нажатию одной и той же кнопки???
(точно знаю, что aTools написаны на Delphi).
← →
Nik_vr © (2005-05-20 12:14) [6]2kat
Спасибо, но это я знал...
2OSokin
Интересно, а как тогда некоторые программы (типа aTools)
открывают/закрывают лоток по нажатию одной и той же кнопки???
(точно знаю, что aTools написаны на Delphi).
← →
Alexander Panov © (2005-05-20 12:25) [7]Интересно, а как тогда некоторые программы (типа aTools)
открывают/закрывают лоток по нажатию одной и той же кнопки???
А для этого обязательно знать состояние лотка?
← →
Чапаев © (2005-05-20 12:33) [8]> mciSendString("Set cdaudio door closed wait", nil, 0, handle);
Логично, что есть и аналогичные команды get. Справочник по MCI тебе в руки.
← →
Marser © (2005-05-20 16:39) [9]
> Чапаев © (20.05.05 12:33) [8] [Новое
>сообщение][Ответить]
> > mciSendString("Set cdaudio door closed wait", nil,
>0, handle);
> Логично, что есть и аналогичные команды get.
> Справочник по MCI тебе в руки.
Нет таких. Есть status
← →
DVM © (2005-05-20 17:01) [10]ЭТО НЕВОЗМОЖНО, СТО РАЗ ГОВОРЕНО!
← →
Nik_vr © (2005-05-20 22:23) [11]Ну невозможно, так невозможно... А как тогда открыть/закрыть лоток одной кнопкой (если открыт-закрыть и наоборот)? Ведь делают же люди!
← →
Eraser © (2005-05-20 23:11) [12]Nik_vr © (20.05.05 22:23) [11]
С пом. операторов условия.
← →
Anatoly Podgoretsky © (2005-05-20 23:14) [13]Синхронизация.
← →
Nik_vr © (2005-05-21 13:41) [14]2Eraser & Anatoly Podgoretsky
А подробнее можно?
← →
Eraser © (2005-05-21 13:46) [15]Удалено модератором
← →
Eraser © (2005-05-21 13:46) [16]Удалено модератором
← →
Anatoly Podgoretsky © (2005-05-21 13:48) [17]Nik_vr © (21.05.05 13:41) [14]
Просто!
Закрой один раз и State := Closed
← →
Nik_vr © (2005-05-21 19:45) [18]Это все я так сделал. Проблема вот в чем: если мою программу запустили в том момент когда лоток открыть, то я не могу закрыть его нормально...
2Eraser
Пошутить я и сам люблю...
← →
Anatoly Podgoretsky © (2005-05-21 20:20) [19]Nik_vr © (21.05.05 19:45) [18]
Ошибка в программе
← →
OSokin © (2005-06-21 17:38) [20]Люди, а ведь это возможно! Смотрите RapidCache у VirtualDrive!
← →
Digitman © (2005-06-21 17:45) [21]поелозить лотком у юзера в самый неожиданный для него момент - это верх остроумия
← →
Nik_vr © (2005-06-21 18:59) [22]2OSokin:
Мне тожу думается, что возможно...
2Digitman
Да мне просто лень тянуться под стол :)
← →
Nik_vr © (2005-06-21 18:59) [23]Удалено модератором
← →
MS-MEN © (2005-06-21 23:54) [24]Можно.
1) Выбрать диск обратится к портам 0/I и получить все что хотел.
2) Прочитать CD с помощью CreateFile и проверить что есть сигнал
3) Открыть а затем прочитать диск если ошибка другая то все ok.
Но самый лучши вариянт это первый.
← →
DVM © (2005-06-22 10:44) [25]Никак не проверить, сколько раз говорено! Можно только попытаться при старте сразу его закрыть и считать потом закрытым. Далее отслеживать движения лотка.
← →
Anatoly Podgoretsky © (2005-06-22 11:02) [26]DVM © (22.06.05 10:44) [25]
Не выйдет, как ты будешь отслеживать движение лотка, иначе бы и проблемы не было.
← →
DVM © (2005-06-22 11:53) [27]
> как ты будешь отслеживать движение лотка, иначе бы и проблемы
> не было.
Там какое-то сообщение можно получать.
← →
КодеКорешь (2005-08-08 18:45) [28]Есть такая функция GetNtmsObjectInformation далее смотреть следующие структуры NTMS_OBJECTINFORMATION NTMS_IEDOORINFORMATION
typedef struct _NTMS_IEDOORINFORMATION {
WORD Number;
WORD State;
WORD MaxOpenSecs;
NTMS_GUID Library;
} NTMS_IEDOORINFORMATION;
State - State of the door. This can be one of the following values.
Это все это к сожалению в делфи не портировано, так что ручками...
← →
n0name (2005-08-08 21:08) [29]Могу добавить что это происходить через интерфейс RSM. Для вызова вышеуказанной функции надо получить GUID этого устройства. Его, как я полагаю можно узнать вызвав IOCTL_DISK_GET_DRIVE_LAYOUT_EX.
Страницы: 1 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.051 c