Страница 1 из 1

Люди умные! Проблема с СИДЮКАМИ

Добавлено: 13 сен 2004, 12:23
Dr_Grizzly
Всем привет! Я использую такую вот ф-цию:

Код: Выделить всё

 Function CDDetect:String;
var
Res : MciError;
OpenParm: TMCI_Open_Parms;
Flags : DWord;
S : String;
Drive:Char;
Wat:Integer;
Begin
For Drive:='Z' Downto 'A' do
  begin
    S:=Drive+':';
    Flags:=mci_Open_Type or mci_Open_Element;
      With OpenParm do
        begin
         dwCallback := 0;
         lpstrDeviceType := 'CDAudio';
         lpstrElementName := PChar(S);
        end;
    Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
   IF Res=0 Then
     begin
       CDDetect:=CDDetect+Drive;
       mciSendCommand(0, mci_Close, Flags, Longint(@OpenParm));
     end;
 end;
end;
Это чтоб определить сколько у компа сидюков. Она срабатывает один раз, 2-ой раз ни чего не выходит, приходиться закрывать прогу и снова открывть, потом я пытаюсь открыть один из определившихся сидюков такой ф-цией:

Код: Выделить всё

 function OpenCD(Drive:String) : Boolean;
var
Res : 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;
Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Res<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
IF Res=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
end;
end;
И ничего не выходит. Но если я просто укажу букву сидюка и попробую открыть его, она сработает, а вот после использования CDDetect, CDOpen уже не работает. Я всю голову уже изломал, пробовал обнулять переменные, но может я чего-то еще забыл сделать???

Добавлено: 15 сен 2004, 07:26
Naeel Maqsudov
Воспользуйтесь кнопкой Правка и переоформите пожалуйста текст исходников с использованием тега CODE. А то это ж читать невозможно!

См. справку: forum/faq.php?mode=bbcode