Как узнать есть ли в заданном CD-ROM'е Audio CD?

Материал из DRKB

Как узнать есть ли в заданном CD-ROM'е Audio CD?[править | править код]

Можно использовать функцию Windows API GetDriveType() чтобы определить является ли дисковод CD-ROM'мом. И функцию API GetVolumeInformation() чтобы проверить VolumeName на равенство 'Audio CD'.

Пример:

function IsAudioCD(Drive: Char): Boolean;
var
  DrivePath: string;
  MaximumComponentLength: DWORD;
  FileSystemFlags: DWORD;
  VolumeName: string;
begin
  Result := False;
  DrivePath := Drive + ':\';
  if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then
    exit;
  SetLength(VolumeName, 64);
  GetVolumeInformation(PChar(DrivePath), PChar(VolumeName),
    Length(VolumeName), nil, MaximumComponentLength, FileSystemFlags, nil, 0);
  if lStrCmp(PChar(VolumeName), 'Audio CD') = 0 then
    Result := True;
end;

function PlayAudioCD(Drive: Char): Boolean;
var
  mp: TMediaPlayer;
begin
  Result := False;
  Application.ProcessMessages;
  if not IsAudioCD(Drive) then
    exit;
  mp := TMediaPlayer.Create(nil);
  mp.Visible := False;
  mp.Parent := Application.MainForm;
  mp.Shareable := True;
  mp.DeviceType := dtCDAudio;
  mp.FileName := Drive + ':';
  mp.Shareable := True;
  mp.Open;
  Application.ProcessMessages;
  mp.Play;
  Application.ProcessMessages;
  mp.Close;
  Application.ProcessMessages;
  mp.Free;
  Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not PlayAudioCD('D') then
    ShowMessage('Not an Audio CD');
end;


DELPHI VCL FAQ Перевод с английского
Подборку, перевод и адаптацию материала подготовил Aziz(JINX)
специально для Королевства Дельфи


Source: Взято из
ID: 01402