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.
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.