Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Как узнать выдвинут-ли лоток 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
14-38536
asafr
2003-01-29 10:58
2003.02.13
Будь здоров, товарищ Программист....!!!!!!


1-38281
Dinn
2003-02-05 16:50
2003.02.13
линии с шириной >1 разными стилями


1-38344
UDS
2003-02-02 18:01
2003.02.13
как сделать тестовую прогу?


1-38379
Юный_программер
2003-02-02 16:11
2003.02.13
Как на форме вытаскивать иконку то одну а то другую?


3-38091
Ag2002
2003-01-27 16:28
2003.02.13
Подключение