INFORMATION DISQUE DUR

Description

unit UNIT1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Gauges, StdCtrls, FileCtrl,  Registry    ;
   {il faut utilisé l'unité des registres;}

type
  TForm_Main = class(TForm)
    Drives: TDriveComboBox;
    TypeDrive: TLabel;
    NameDrive: TLabel;
    SerialNumber: TLabel;
    SystemeFile: TLabel;
    FreeSpace: TLabel;
    TotalSpace: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure SelectNewDisk(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form_Main: TForm_Main;

implementation

{$R *.dfm}

// Cette procédure sera automatiquement exécutée à chaque changement du composant
// TDriveComboBox.
procedure TForm_Main.SelectNewDisk(Sender: TObject);
// On fait les déclarations qui vont être nécessaires à nos fonctions
var BuffNom : Array[0..255]of Char; // Buffer pour GetVolumeInformation
    BuffSys : Array[0..255]of Char; // Buffer pour GetVolumeInformation
    Serie, Long, Flags : DWord; // pour GetVolumeInformation
    TDrive  : String; // Pour stocker les types de volumes
    FreeBytesAvailable, TotalNumberofBytes, TotalNumberofFreeBytes : TLargeInteger;
begin
// on récupère les informations du volume sélectionné dans le TDriveComboBox
 GetVolumeInformation(PChar(Drives.Drive+':')
                         ,@BuffNom,SizeOf(BuffNom) // contiendra le nom
                         ,@Serie                   // contiendra le n° de série
                         ,Long
                         ,Flags
                         ,@BuffSys,SizeOf(BuffSys)); // et le type de fichiers
// on récupère l'information sur le type de volume sélectionné dans le TDriveComboBox
  case GetDriveType(PChar(Drives.Drive+':')) of
    DRIVE_UNKNOWN     : TDrive := 'Lecteur inconnu'; // met le résultat dans un String
    DRIVE_NO_ROOT_DIR : TDrive := 'Chemin racine invalide';
    DRIVE_REMOVABLE   : TDrive := 'Disque Amovible';
    DRIVE_FIXED       : TDrive := 'Disque Dur';
    DRIVE_REMOTE      : TDrive := 'Disque Internet';
    DRIVE_CDROM       : TDrive := 'Lecteur CD';
    DRIVE_RAMDISK     : TDrive := 'Disque RAM';
  end;
// On affiche le nom du volume sélectionné
  NameDrive.Caption := 'Nom du Volume : '+BuffNom;
// on affiche le système de fichiers ( NTFS , FAT32 )
  SystemeFile.Caption := 'Système de Fichiers : '+BuffSys;
// on affiche le numéro de série du volume
  SerialNumber.Caption := 'Numéro de Série : '+IntToStr(Serie);
  TypeDrive.Caption := 'Type de lecteur : '+TDrive;
// Si le string est différent de NUL alors le volume existe
  if TDrive <>'' then
// On utilise GetDiskFreeSpaceEx pour traiter des volumes supérieurs à 2Go
    GetDiskFreeSpaceEx(PChar(Drives.Drive+':'),FreeBytesAvailable, TotalNumberofBytes, @TotalNumberofFreeBytes);
// on affiche le nombre d'octets libres
    FreeSpace.Caption := IntToStr(TotalNumberofFreeBytes)+' octets libres';
// on affiche la capacité totale du volume en octets
    TotalSpace.Caption := IntToStr(TotalNumberOfBytes)+' octets de capacité';
end;

procedure TForm_Main.Button1Click(Sender: TObject);
var
  SerialNumber: string;
   Registry: TRegistry;
begin
  //creer un registre  reader(clone)
  Registry := TRegistry.Create(KEY_READ );

  try
    // Naviger jusqu'au resistre "repertoire":
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    if Registry.OpenKeyReadOnly('HARDWAREDEVICEMAPScsiScsi Port 0Scsi Bus 0Target Id 0Logical Unit Id 0') then
      SerialNumber:=Registry.ReadString('SerialNumber'); //lire et recuperer la valeur du registre

  finally

    edit1.Text:=SerialNumber;    //   affichage   de la valeur     du registre
    Registry.Free;               //   libere  le registe alloué
  end;
end;

procedure TForm_Main.FormCreate(Sender: TObject);
begin

end;

end.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.