| auteurs : Geronimo, Ricky81 | La fonction DiskSize permet de connaître la taille d'un lecteur. Elle prend en paramètre un entier qui correspond au lecteur à examiner : 1 pour A:, 2 pour B:, et ainsi de suite. Si la fonction échoue, elle renvoie la valeur -1, permettant ainsi de savoir que le lecteur est vide. Néanmoins, une erreur Windows est également affichée dans ce cas. Pour ne pas avoir l'affichage de cette erreur, nous utilisons la fonction SetErrorMode.
UINT oldErrorMode = SetErrorMode (SEM_FAILCRITICALERRORS);
if (DiskSize (1 ) > - 1 )
{
ShowMessage (" Une disquette est dans le lecteur " );
}
else
{
ShowMessage (" Aucune disquette n'est dans le lecteur " );
}
SetErrorMode (oldErrorMode);
|
|
| auteur : Ricky81 | La fonction DiskSize permet de connaître la taille d'un lecteur. Elle prend en paramètre un entier qui correspond au lecteur à examiner : 1 pour A:, 2 pour B:, et ainsi de suite.
__int64 taille = DiskSize (3 );
|
Ce code renvoie la taille, en octets, du lecteur C:.
|
| auteur : Freeze |
La fonction DiskSize permet de connaître la taille d'un lecteur. Elle prend en paramètre un entier qui correspond au lecteur à examiner : 1 pour A:, 2 pour B:, et ainsi de suite.
__int64 espaceTotal = DiskSize (3 );
|
Ce code renvoie l'espace mémoire du lecteur C:, en octets.
|
| auteur : Ricky81 | La fonction DiskFree permet de connaître la taille d'un lecteur. Elle prend en paramètre un entier qui correspond au lecteur à examiner : 1 pour A:, 2 pour B:, et ainsi de suite.
__int64 espaceLibre = DiskFree (3 );
|
Ce code renvoie l'espace mémoire du lecteur C:, en octets, pouvant encore être utilisé.
|
| auteurs : Geronimo, TABZ | Utilisez pour cela la commande mciSendString (mmsystem.h).
Pour ouvrir :
mciSendString (" Set cdaudio door open wait " , 0 , 0 , 0 );
|
Pour fermer :
mciSendString (" Set cdaudio door closed wait " , 0 , 0 , 0 );
|
Dans le cas de plusieurs lecteurs, il vous faut initialiser le lecteur concerné avec la commande suivante :
mciSendString (" open F:\ type cdaudio alias cdaudio " );
|
De la même façon, vous aurez à utiliser la commande suivante pour clôturer l'association :
mciSendString (" close cdaudio " , 0 , 0 , 0 );
|
Tout ceci donne donc le code suivant pour ouvrir par exemple :
mciSendString (" open F:\ type cdaudio alias cdaudio " , 0 , 0 , 0 );
mciSendString (" Set cdaudio door open wait " , 0 , 0 , 0 );
mciSendString (" close cdaudio " , 0 , 0 , 0 );
|
|
| auteur : TABZ | Il suffit d'utiliser la fonction GetDriveType, en créant par exemple la méthode suivante :
String TypeLecteur (String lecteur)
{
int id = GetDriveType (lecteur.c_str ());
switch (id)
{
case 0 : return " Inconnu " ;
case 1 : return " Inexistant " ;
case DRIVE_REMOVABLE : return " Lecteur de disquette " ;
case DRIVE_FIXED : return " Lecteur de disque " ;
case DRIVE_REMOTE : return " Lecteur distant " ;
case DRIVE_CDROM : return " Lecteur de CD-ROM " ;
case DRIVE_RAMDISK : return " Ramdisk " ;
}
}
|
Ainsi par exemple, TypeLecteur("C:\") retournera "Lecteur de disque".
|
lien : Comment lire le nom de volume et le numéro de série d'un disque ?
|
| auteurs : Nono40, Ricky81, Freeze, virtuA | La fonction suivante permet d'obtenir des informations sur un disque :
int GetVolumeInformationA (
const char * lpRootPathName,
char * lpVolumeNameBuffer,
unsigned long nVolumeNameSize,
unsigned long * lpVolumeSerialNumber,
unsigned long * lpMaximumComponentLength,
unsigned long * lpFileSystemFlags,
char * lpFileSystemNameBuffer,
unsigned long nFileSystemNameSize)
|
Il suffit de passer en paramètre le chemin vers la racine du disque ("C:\\"), afin d'obtenir les informations voulues. Au retour de la fonction :
- lpVolumeNameBuffer va contenir le nom de volume
- lpFileSystemNameBuffer va contenir le nom du système de fichiers
- lpVolumeSerialNumber va contenir le numéro de série
- lpMaximumComponentLength va contenir la longueur maximum d'un nom de fichier
- lpFileSystemFlags va contenir la liste des états du disque
Exemple d'utilisation de la fonction :
void __fastcall TForm1:: Button1Click (TObject * Sender)
{
const int Max_Length = 256 ;
char * VolName = new char [Max_Length];
char * FileSysName = new char [Max_Length];
unsigned long VolSerial;
unsigned long FileMaxLen;
unsigned long FileFlags;
if (GetVolumeInformationA (" C:\\ " , VolName, Max_Length, & VolSerial, & FileMaxLen, & FileFlags, FileSysName, Max_Length))
{
AnsiString Message = " Nom du disque : " + AnsiString (VolName);
Message + = " \nSystème de fichiers : " + AnsiString (FileSysName);
Message + = " \nNuméro de série : " + FloatToStr (VolSerial);
ShowMessage (Message);
}
delete [] VolName;
delete [] FileSysName;
}
|
Une variante avec la fonction suivante :
BOOL GetVolumeInformation (
LPCTSTR lpRootPathName,
LPTSTR lpVolumeNameBuffer,
DWORD nVolumeNameSize,
LPDWORD lpVolumeSerialNumber,
LPDWORD lpMaximumComponentLength,
LPDWORD lpFileSystemFlags,
LPTSTR lpFileSystemNameBuffer,
DWORD nFileSystemNameSize
);
|
Exemple d'utilisation de cette fonction (n'oubliez pas d'inclure stdio.h) :
void __fastcall TForm1:: Button1Click (TObject * Sender)
{
AnsiString numserie;
char VolName[12 ],serial[15 ];
DWORD VolumeSerialNumber;
DWORD MaximumComponentLength;
DWORD FileSystemFlags;
char FileSystemName[5 ];
if (GetVolumeInformation (" C:\\ " ,
VolName,
sizeof (VolName),
& VolumeSerialNumber,
& MaximumComponentLength,
& FileSystemFlags,
FileSystemName,
sizeof (FileSystemName)))
{
sprintf (serial," %X-%X " ,HIWORD (VolumeSerialNumber),LOWORD (VolumeSerialNumber));
numserie = serial;
AnsiString Message = " Nom du disque : " + AnsiString (VolName);
Message + = " \nSystème de fichiers : " + AnsiString (FileSystemName);
Message + = " \nNuméro de série : " + numserie;
ShowMessage (Message);
}
}
|
La seule différence à la restitution concerne le numéro de série qui ici est au format hexadécimal.
|
lien : Comment déterminer le type d'un lecteur ?
|
Consultez les autres F.A.Q.
|
|