![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно узнать метку диска [D1, D2, D3, D4, D5, D6, D7, Win95/98]
Vit1251 © (2002-12-20 23:26:00)Есть Audio CD-ROM как узнать метку или серийный номер диска?
AlexT1000 (2002-12-21 10:14:00) [1]function IsCorrectCDVolume(TestVolume:String):boolean;
vAR sVolume:string;DriveType,Mask,I,Drivers,j:DWord;
ch:char;
drv:byte;
OldErrorMode: Integer;
NotUsed, VolFlags: DWORD;
Buf: array [0..MAX_PATH] of Char;
begin
Result:=false;
TestVolume := AnsiUpperCaseFileName(TestVolume);
Drivers:=GetLogicalDrives;
drv:=97;Mask:=1;
SetErrorMode(SEM_FAILCRITICALERRORS);
for i:=0 to 25 do
begin
ch:=Char(CHR(drv+i));
DriveType:=GetDriveType(PChar(ch + ":\"));
if (Drivers and Mask<>0) and (DriveType=DRIVE_CDROM) then
begin
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
Buf[0] := #$00;
if GetVolumeInformation(PChar(string(chr(drv+i)) + ":\"), Buf, DWORD(sizeof(Buf)),
nil, NotUsed, VolFlags, nil, 0) then
SetString(sVolume, Buf, StrLen(Buf))
else sVolume := "";
sVolume := AnsiUpperCaseFileName(sVolume);
if sVolume=TestVolume then begin Result:=true;Exit;end;
finally SetErrorMode(OldErrorMode); end;
end; //if
Mask:=Mask shl 1;
end; //for
end;
///////////////////////////////////////////////////////////////////////////////