Thema: Delphi CD Extra

Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#10

Re: CD Extra

  Alt 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,
Miniaturansicht angehängter Grafiken
cdromtype_898.png  
Angehängte Dateien
Dateityp: 7z source_207.7z (3,8 KB, 58x aufgerufen)
Dateityp: 7z cdromtype_967.7z (168,9 KB, 48x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat