Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
Delphi XE5 Professional
|
Re: CD Extra
24. Nov 2006, 13:13
Ich habe eine Lösung gefunden:
Delphi-Quellcode:
// CDROM Type
//==============================================================================
function CDROM_Type(const CDHandle : THandle) : String;
const
CDROM_DISK_AUDIO_TRACK = $00001;
CDROM_DISK_DATA_TRACK = $00002;
IOCTL_CDROM_DISK_TYPE = $20040;
type
CDROM_DISK_DATA = Record
DiskData : ULONG;
end;
var
cdd : CDROM_DISK_DATA;
rb : DWord;
begin
Result := '';
rb := 0;
if DeviceIoControl(CDHandle,
IOCTL_CDROM_DISK_TYPE,
Nil,
0,
@cdd,
sizeof(cdd),
rb,
Nil)
then
case cdd.DiskData and $03 of
CDROM_DISK_DATA_TRACK:
Result := 'DatenCD';
CDROM_DISK_AUDIO_TRACK:
Result := 'AudioCD';
CDROM_DISK_DATA_TRACK + CDROM_DISK_AUDIO_TRACK:
Result := 'MixedCD';
end
else
Result := GetLastErrorMsg;
end;
Delphi-Quellcode:
// Letzte Fehlermeldung
//==============================================================================
function GetLastErrorMsg: String;
var
Fehler : PChar;
begin
GetMem (Fehler, 255);
FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER or
FORMAT_MESSAGE_FROM_SYSTEM,
nil,
GetLastError,
0,
@Fehler,
255,
nil);
Result := Trim(Fehler);
end;
Der Function wird das mit CreateFile erhaltene Handle übergeben und man erhält einen String zurück. Im Beispielprojekt auch eine Zahl,
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
|
|
Zitat
|