Форум: "WinAPI";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
ВнизКак прочитать CD-Text компакт-диска? Найти похожие ветки
← →
AllDontFire (2007-07-04 01:50) [0]Привет Всем!
Как прочитать CD-Text компакт-диска? Данные: "Артист" и "Заголовок" - как в Nero ,например, при записи CD audio. Потом их можно увидеть в InfoTool.
Cпасибо.
← →
Alldontfire (2007-07-06 10:52) [1]
uses strutils,sysutils,math,dialogs,StdCtrls,windows,Classes,ExtCtrls;
Procedure ReadCDText(CdD:Char;var Title,Artist:String);
const
//CDROM_READ_TOC_EX_FORMAT_CDTEXT =$5;
IOCTL_CDROM_READ_TOC_EX = $24054;
type
CDROM_TOC_CD_TEXT_DATA_BLOCK = record
PackType:UCHAR ;
TrackNumber:UChar ;
//UCHAR TrackNumber:7;
//UCHAR ExtensionFlag:1;
SequenceNumber:UCHAR ;
//UCHAR CharacterPosition:4;
//UCHAR BlockNumber:3;
Position:Uchar;
//UCHAR Unicode:1;
//union { UCHAR Text[12]; WCHAR WText[6]; };
Text:Array[1..12] of CHAR;
CRC:Array[1..2]of UCHAR ;
end;
CDROM_READ_TOC_EX = record
par1: byte;
//Format : UCHAR:4 ;
// Reserved1 : UCHAR:3;
// Msf : UCHAR:1 ;
SessionTrack:UCHAR;
Reserved2:UCHAR ;
Reserved3:UCHAR;
end;
CDROM_TOC_CD_TEXT_DATA= record
Length:Array[1..2] of UCHAR ;
Reserved1:UCHAR ;
Reserved2:UCHAR ;
Descriptors:array [0..4]of CDROM_TOC_CD_TEXT_DATA_BLOCK ;
end;
var
hCDDevice : THandle;
d:Bool;
in_data: CDROM_READ_TOC_EX;
out_size:DWORD ;
out_data: CDROM_TOC_CD_TEXT_DATA ;
BEGIN
FillChar( in_data,SizeOf(in_data),0);
FillChar( out_data,SizeOf(out_data),0);
in_data.par1:=$85;
//in_data.Format := CDROM_READ_TOC_EX_FORMAT_CDTEXT ;
//in_data.Reserved1 := 0;
//in_data.Msf :=1;
in_data.SessionTrack := 0;
hCDDevice := CreateFile(PChar("\\.\"+cdd+":"),
GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 );
if hCDDevice <> INVALID_HANDLE_VALUE then
begin
d:=DeviceIoControl(hCDDevice,IOCTL_CDROM_READ_TOC_EX,@in_data,
sizeof(in_data),@out_data,sizeof(out_data),out_size,nil );
if d = True then begin
Title:=out_data.Descriptors[0].Text;
Artist:=out_data.Descriptors[4].Text;
end
else showmessage(" Ошибка:"+SysErrorMessage(GetLastError));
CloseHandle(hCDDevice);
end
else showmessage("Error in Create file "+SysErrorMessage(GetLastError));
end;
http://www.codeproject.com/useritems/SimpleAudioCD.asp?df=100&forumid=344360&select=1706263#xx1706263xx
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c