Trucs et astuces pour C++ Builder

Obtenir le numéro de série d'un disque

CGI

- Titre : Trucs et astuces pour C++ Builder

- Auteur : CGI

- Parution : 23 octobre 2002

- Licence : Copyright 2002-2016 CGi - Tous droits réservés CGi. Toutes reproduction, utilisation ou diffusion de ce document par quelque moyen que ce soit autre que pour un usage personnel doit faire l'objet d'une autorisation écrite de la part de l'auteur, propriétaire des droits intellectuels. Les codes sources de ce document sont fournis en l'état. L'utilisateur les utilise à ses risques et périls, sans garantie d'aucune sorte de la part de l'auteur. L'auteur n'est responsable d'aucun dommage subi par l'utilisateur pouvant résulter de l'utilisation ou de la distribution des codes sources de ce document. De la même façon, l'auteur n'est en aucun cas responsable d'une quelconque perte de revenus ou de profits, ou de données, ou de tous dommages directs ou indirects, susceptibles de survenir du fait de l'utilisation des codes sources de ce document, quand bien même l'auteur aurait été averti de la possibilité de tels dommages. L'utilisation des codes sources de ce document vaut acceptation par l'utilisateur des termes de la licence ci-dessus.

Sommaire

- I. Obtenir le numéro de série d'un disque

I - Obtenir le numéro de série d'un disque

Pour l'exemple sur une fiche Form1, poser un bouton Button1 et 3 labels Label1, Label2 et Label3. Puis sur l'événement OnClick de Button1 insérer le code ci-dessous. C'est la fonction de l'API Windows GetVolumeInformation qui va nous fournir ces informations. Le numéro de série du volume est retourné dans une variable de type DWORD dont on passe l'adresse au 4e paramètre de la fonction. Dans l'exemple, il est affiché sur Label1 en hexadécimal. Cette fonction peut renvoyer aussi le système de fichier du volume, affiché par Label2 dans l'exemple et aussi le nom du volume sur Label3 dans l'exemple. Il suffit de lui fournir l'adresse et la taille des buffers où elle doit écrire ces informations.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD NumSerie;
char NomVol[12];
char SysFile[16];

GetVolumeInformation("C:/", NomVol, 12, &NumSerie, NULL , NULL, SysFile, 16);

Label1->Caption = IntToHex((int)NumSerie, 8);
Label2->Caption = SysFile;
Label3->Caption = NomVol;
}

Retour à l'index.