18. januar 2005 - 19:38
Der er
3 kommentarer og
1 løsning
problemer med kode til cd-rom drev
hej
for et stykke tid siden her på eksperten fandt jeg en stump kode der kunne åbne og lukke et cd drev, den med mmsystem i uses og mci('open cd audio door') og mci('close cd audio door')
men mit problem er at vis man kun har et enkelt cd drev siddende i maskinen (lige som mig) virker koden fint men på en af mine venners computer hvor han har et dvd drev og en cd brænder, der sker der ingen ting.
er der nogen der kan forklare hvorfor og eventuelt hjælpe med noget kode der løser problemet
på forhånd tak
20. januar 2005 - 00:57
#1
hej!
Det samme problem havde jeg også haft en gang...jeg løst problemmet ved at lave en konfiguration form, der tjekkes den første CDROM/BRÆNDER og sættes denne som default driver, derpå i formen lav jeg en komboboks, der henter alle CDROM/BRÆNDER og lad bruger selv vælg én, og gem disse konfiguration i en fil konfig.dat (f.eks).
Håber du følges min tank.
Hilsen
Lavang
25. januar 2005 - 00:32
#3
her i eksemplet har jeg brugt en TDriveComboBox, kaldet til funktioen kan du også gøre via en button eller lign. skriv " opencd(D) " og " close(D) "
husk mmsystem i USES
-------------------------------------------------------------------------------------
//åbner cd
function OpenCD(Drive: Char): 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;
//lukker cd
function CloseCD(Drive: Char): 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_CLOSED, 0);
if Res = 0 then Exit;
Result := True;
finally
mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
opencd(drev.Drive);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
closecd(drev.Drive);
end;
end.