Как узнать серийный номер и тип диска

Создаём новую форму. На неё ложим: Memo (mmout), Panel (Panel1:), Button(bbRun). Это выглядит вот так

Дальше bbRun на клик присваеваем следующий код:

procedure TForm1.bbRunClick(Sender: TObject);

var

   VolumeName,

   FileSystemName : array [0..MAX_PATH-1] of Char;

   VolumeSerialNo,l : DWord;

   MaxComponentLength,FileSystemFlags: DWord;//Cardinal;

 

   dr: Pchar;

   b : bool;

 

   ComNam : PChar;

   s : String;

   n : Cardinal;

 

   CA : PAnsiChar;

 

begin

   dr:='c:\';

   b:=GetVolumeInformation(dr,VolumeName,MAX_PATH,@VolumeSerialNo,

       MaxComponentLength,FileSystemFlags,

       FileSystemName,MAX_PATH);

   if b then begin

      mmout.Lines.Add('VolumeName = '+VolumeName);

      mmout.Lines.Add('SerialNo = ' + inttohex(HIWord(VolumeSerialNo),4)+'-'+inttohex(LoWord(VolumeSerialNo),4) ); // $'+IntToHex(VolumeSerialNo,8)

      mmout.Lines.Add('CompLen = '+IntToStr(MaxComponentLength));

      mmout.Lines.Add('Flags = $'+IntToHex(FileSystemFlags,4));

      mmout.Lines.Add('FSName = '+FileSystemName);

   end;

 

   L:=GetDriveType(dr);

       case l of

       0   : s:='The drive type cannot be determined.';

       1   : s:='The root directory does not exist.';

       2   : S:='DRIVE_REMOVABLE       The drive can be removed from the drive.';

       3   : S:='DRIVE_FIXED       The disk cannot be removed from the drive.';

       4   : S:='DRIVE_REMOTE  The drive is a remote (network) drive.';

       5   : s:='DRIVE_CDROM     The drive is a CD-ROM drive.';

       6   : s:='DRIVE_RAMDISK  The drive is a RAM disk.';

       end;

   Form1.mmout.Lines.Add(s);

   mmout.Lines.Add('');

   mmout.Lines.Add('');

   mmout.Lines.Add('');

end;

 

Исходники той проги лежат здесь.

Хостинг от uCoz