Как получить идентификатор находящегося в CD-ROM'е аудио-компакта? const MCI_INFO_PRODUCT = $00000100; MCI_INFO_FILE = $00000200; MCI_INFO_MEDIA_UPC = $00000400; MCI_INFO_MEDIA_IDENTITY = $00000800; MCI_INFO_NAME = $00001000; MCI_INFO_COPYRIGHT = $00002000; { блок параметров для командного сообщения MCI_INFO } type PMCI_Info_ParmsA = ^TMCI_Info_ParmsA; PMCI_Info_ParmsW = ^TMCI_Info_ParmsW; PMCI_Info_Parms = PMCI_Info_ParmsA; TMCI_Info_ParmsA = record dwCallback: DWORD; lpstrReturn: PAnsiChar; dwRetSize: DWORD; end; TMCI_Info_ParmsW = record dwCallback: DWORD; lpstrReturn: PWideChar; dwRetSize: DWORD; end; TMCI_Info_Parms = TMCI_Info_ParmsA; Идентификатор возвращается функцией MCI_INFO_MEDIA_IDENTITY в виде строки с десятичным числом. Для получения дополнительной информации обратитесь к электронной справке (Win32 и компонент TMediaPlayer). Исправления // метка диска procedure GetDriveInfo(VolumeName: string; var VolumeLabel, SerialNumber, FileSystem: string); var VolLabel, FileSysName :array [0..255] of char; SerNum :pdword; MaxCompLen, FileSysFlags :dword; begin New(SerNum); GetVolumeInformation(PChar(VolumeName), VolLabel, 255, SerNum, MaxCompLen, FileSysFlags, FileSysName, 255); VolumeLabel:=VolLabel; SerialNumber:=Format('%x',[SerNum^]); FileSystem:=FileSysName; Dispose(SerNum); end;
// далее var VolLabel, SN, FileSystem, S : string; begin s := 'g:\'; // имя CD дисковода GetDriveInfo(S, VolLabel, SN, FileSystem); получаем: VolLabel - 'ARMSTRONG' // метка диска SN - B5FF77AD // номер серийный FileSystem - CDFS // тип файловой системы Работает не только для CD для всех типов дисков ... Далее: // метка диска procedure GetAllDrive(Sender: TObject); var i, mask : integer; s : string; begin mask := GetLogicalDrives; i := 0; while mask<>0 do begin ; if (mask and 1) <> 0 then case GetDriveType(PChar(s)) of 0 : ListBox1.Items.Add(s + ' unknown.'); 1 : ListBox1.Items.Add(s + ' not exist.'); DRIVE_REMOVABLE : ListBox1.Items.Add(s + ' removable.'); // floppy,zip DRIVE_FIXED : ListBox1.Items.Add(s + ' fixed.'); DRIVE_REMOTE : ListBox1.Items.Add(s + ' network.'); DRIVE_CDROM : ListBox1.Items.Add(s + ' CD-ROM.'); DRIVE_RAMDISK : ListBox1.Items.Add(s + ' RAM.'); end; inc(i); mask := mask 1; end; end; В ListBox1 получаем все диски на данном компьютере. |