Получение идентификатора диска

Как получить идентификатор находящегося в 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

s := chr(ord('a') i) ':\';

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 shr 1;

end;

end;

В ListBox1 получаем все диски на данном компьютере.

Добавить комментарий