Люди умные! Проблема с СИДЮКАМИ
Добавлено: 13 сен 2004, 12:23
Всем привет! Я использую такую вот ф-цию:
Это чтоб определить сколько у компа сидюков. Она срабатывает один раз, 2-ой раз ни чего не выходит, приходиться закрывать прогу и снова открывть, потом я пытаюсь открыть один из определившихся сидюков такой ф-цией:
И ничего не выходит. Но если я просто укажу букву сидюка и попробую открыть его, она сработает, а вот после использования CDDetect, CDOpen уже не работает. Я всю голову уже изломал, пробовал обнулять переменные, но может я чего-то еще забыл сделать???
Код: Выделить всё
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;
Код: Выделить всё
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;