Как узнать есть ли в заданном 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