Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

Как узнать выдвинут-ли лоток CD-ROMa или задвинут   Найти похожие ветки 

 
Dankin   (2002-12-03 17:56) [0]

Как узнать выдвинут-ли лоток CD-ROMa или задвинут?


 
Виктор Щербаков   (2002-12-03 17:59) [1]

А как узнать есть лоток или нет? :)))


 
Игорь Шевченко   (2002-12-03 17:59) [2]

Глаза.exe


 
greenrul   (2002-12-03 19:23) [3]

А если серъезно?


 
Anatoly Podgoretsky   (2002-12-03 19:43) [4]

А это серьезно и есть


 
Dankin   (2002-12-04 02:41) [5]

Действительно очень смешные шутки. Яж серъезно спрашиваю...
Если просто смотреть есть диск или нет то если его нет
то может лоток и не выдвинут а просто НЕТУ ЕГО ТАМ.
(всмысле диска).


 
Vad   (2002-12-04 06:55) [6]

А если его там вообще нет?(лоток сломали) :-)

А как определить есть ли на выдвинутом лотке диск
или лоток пустой? :-)
----------------------------------------------------------
Нету датчиков на стандартном CD проверяющих наличие диска
или закрыт лоток или нет. Есть один датчик, но он просто останавливает втягивающий двигатель и запускает процесс
определения диска.

Если ты, к примеру, положишь пустую болванку или диск другой стороной, то для CD это равносильно, тому что диска нет.

Поэтому единственный выход попробовать задвинуть лоток,
даже если он уже задвинут.

... и тогда ты сразу все поймешь... есть диск ... нет диск. :-)


 
Dankin   (2002-12-05 01:20) [7]

А можно как нибудь узнать удалось задвинуть или нет... То есть
он уже задвинут.
Или там ничего не возвращается?


 
Vad   (2002-12-05 02:55) [8]

To:Dankin ©
Пробуешь прочитать CD диск, если не читается,
посылаешь команду задвинуть лоток, снова пробуешь
прочитать CD диск, если не читается, посылаешь
сообщение с просьбой вставить диск и так по кругу... :-)


 
Dm9   (2002-12-05 06:20) [9]

Из справки





\Как програмно открыть\закрыть поддон CD-ROM?
Группа ссылок: MCI

Вариант 1:

Функция OpenCD открывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо открыть.
Функция CloseCD закрывает лоток CDROM. Параметр Drive - буква диска лоток которого необходимо закрыть.

.....
uses
... MMSystem;

function OpenCD(Drive : Char) : Boolean;
Var
Err : MciError;
OpenParm: TMCI_Open_Parms;

Flags : DWord;
S : String;
DeviceID : Word;
begin
Result:=false;
S:=Drive+":";
Flags:=mci_Open_Type or mci_Open_Element; // См. mci_Open
With OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";
lpstrElementName := PChar(S);
end;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

IF Err=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
end;
end;


function CloseCD(Drive : Char) : Boolean;
Var
Err : MciError;
OpenParm: TMCI_Open_Parms;
Flags : DWord;
S : String;
DeviceID : Word;
begin
Result:=false;
S:=Drive+":";
Flags:=mci_Open_Type or mci_Open_Element;
With OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";

lpstrElementName := PChar(S);
end;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
IF Err=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
end;
end;



Вариант 2:

Данные функции работаю только с первым устройством в системе:
Открыть дверцу:

mciSendString( "Set cdaudio door open wait", nil, 0, application.handle);

закрыть дверцу:
mciSendString( "Set cdaudio door closed wait", nil, 0, application.handle);


 
Dm9   (2002-12-05 06:25) [10]

Сорри, промахнулся, хотел скопировать это: может, поможет.


\Как отловить открытие\закрытие CD-ROM"а?

Использовать сообщение WM_DEVICECHANGE.


TForm1 = class(TForm)
procedure ReceiveMessage (var Msg: TMessage); message WM_DEVICECHANGE;
private
{ Private declarations }
public
{ Public declarations }
end;

...

procedure TForm1.ReceiveMessage(var Msg: TMessage);
begin
if Msg.WParam=32772 then
ShowMessage("CD-ROM Open");

if Msg.WParam=32768 then
ShowMessage("CD-ROM Close");
end;



 
Vad   (2002-12-05 10:05) [11]

К сожалению приведенный код с ReceiveMessage
страдает маленьким, но существенным недостатком.
Он реагирует только на изменение количества
драйвов в системе и работает только при включенном
автораспознавании CD диска.

Пустой лоток можно гонять туда-сюда сколько угодно.

Так, что чуда не произошло.

Этот код точно-также срабатывает при вставлении USB Flash
и других сменных носителей.


 
Игорь Шевченко   (2002-12-05 10:12) [12]

Как узнать, есть ли коврик для мыши или нет ?


 
Dankin   (2002-12-07 02:19) [13]

Dm9 огромный сенкс, ты мне очень помог. Vad-выкрутимся.

Игорь Шевченко, ты знаеш шутник из тебя никакой...
(Блин ну не можеш ничего посоветовать так не советуй)


 
Koster   (2002-12-09 07:09) [14]

Удалено модератором



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
14-38437
maxim2
2003-01-30 11:11
2003.02.13
Как вызвать процедуру из чужой Dll


14-38543
Ketmar
2003-01-27 17:10
2003.02.13
высокая поэзия


1-38208
Nemas
2003-02-05 08:05
2003.02.13
Пра простеньких вопросов


1-38327
sagchat
2003-01-31 13:41
2003.02.13
Как при развертывании формы во весь экран, разместить memo


14-38506
gn
2003-01-27 16:52
2003.02.13
раз уш навсех наезжают





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский