Ce programme affiche la liste des lecteurs present sur votre pc et indique le type de lecteur et sa capaciter.
Le lecteur logique n'affiche pas toutes les informations si vous avez la solucion laisser moi un message
Compiler sous win2000 avec vc++ 6
Source / Exemple :
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <lmcons.h>
#define NDRIVE 25 // nombre de lecteur maxi (alphabet donc 26 a=0 ..... z = 25)
unsigned int DriveCount = -1; // compter de lecteur trouver (le premier lecteur est mis sur 0)
char lettrelecteur[1]; // la lettre du lecteur (A, B, C ,.......)
int choie;
struct GETDRIVEINFO
{
// Information sur le lecteur obtenue par GetDriveType
unsigned int ID;
char Lecteur[1];
LPTSTR Type;
// Information sur le lecteur obtenue par GetVolumeInformation
char VolumeName[UNLEN+1];
LPDWORD SerialNumber;
LPDWORD MaxComponent;
LPDWORD FileSysFlag;
char SysName[UNLEN+1];
// Taille du lecteur avec GetDiskFreeSpace
unsigned long SectorsPerCluster;
unsigned long BytesPerSectors;
unsigned long FreeCluster;
unsigned long TotalNumberOfCluster;
};
GETDRIVEINFO gDriveInfo[NDRIVE];
void FindDrive();
void GetDriveInfo(int ID);
DWORD SysSize = UNLEN+1;
DWORD VolumeSize = UNLEN+1;
int main()
{
cout << "Recherche des lecteurs en cours ... ";
FindDrive();
cout << "... Recherche terminer\n\n";
for(;;)
{
for(int nb = 0; nb < (DriveCount+1); nb++)
cout << "Tapper : " << gDriveInfo[nb].ID << " pour avoir des informations sur le lecteur : " << gDriveInfo[nb].Lecteur << "\n";
cout << "\nTapper : 27 pour quitter l'application\n\n"
<< "-->";
cin >> choie;
if(choie > -1 && choie < (DriveCount+1))
GetDriveInfo(choie);
else if(choie == 27)
return 0;
else
cout << "\nVotre choix ne fait pas partie de la liste !!\n\n";
}
return 0;
}
void FindDrive()
{
HRESULT hr;
int Count;
for(Count = 65; Count <= 90; Count++)
{
char Buff = (char) Count;
sprintf(lettrelecteur, "%c:", Buff);
hr = GetDriveType(lettrelecteur);
switch(hr)
{
case 2:
DriveCount++;
gDriveInfo[DriveCount].ID = DriveCount;
sprintf(gDriveInfo[DriveCount].Lecteur,lettrelecteur);
gDriveInfo[DriveCount].Type = "Lecteur de disquette";
break;
case 3:
DriveCount++;
gDriveInfo[DriveCount].ID = DriveCount;
sprintf(gDriveInfo[DriveCount].Lecteur,lettrelecteur);
gDriveInfo[DriveCount].Type = "Disque dur";
break;
case 4:
DriveCount++;
gDriveInfo[DriveCount].ID = DriveCount;
sprintf(gDriveInfo[DriveCount].Lecteur,lettrelecteur);
gDriveInfo[DriveCount].Type = "Lecteur amovible ou réseau";
break;
case 5:
DriveCount++;
gDriveInfo[DriveCount].ID = DriveCount;
sprintf(gDriveInfo[DriveCount].Lecteur,lettrelecteur);
gDriveInfo[DriveCount].Type = "Lecteur CD/DVD";
break;
case 6:
DriveCount++;
gDriveInfo[DriveCount].ID = DriveCount;
sprintf(gDriveInfo[DriveCount].Lecteur,lettrelecteur);
gDriveInfo[DriveCount].Type = "Disque virtuel";
break;
default:
break;
}
}
}
void GetDriveInfo(int ID)
{
unsigned long freespace, usespace, totspace;
GetVolumeInformation(gDriveInfo[ID].Lecteur,
gDriveInfo[ID].VolumeName,
VolumeSize,
gDriveInfo[ID].SerialNumber,
gDriveInfo[ID].MaxComponent,
gDriveInfo[ID].FileSysFlag,
gDriveInfo[ID].SysName,
SysSize);
GetDiskFreeSpace(gDriveInfo[ID].Lecteur,
&gDriveInfo[ID].SectorsPerCluster,
&gDriveInfo[ID].BytesPerSectors,
&gDriveInfo[ID].FreeCluster,
&gDriveInfo[ID].TotalNumberOfCluster);
freespace = ((gDriveInfo[ID].FreeCluster
- gDriveInfo[ID].SectorsPerCluster
- gDriveInfo[ID].BytesPerSectors)/1024)/1024;
totspace = ((gDriveInfo[ID].TotalNumberOfCluster
- gDriveInfo[ID].SectorsPerCluster
- gDriveInfo[ID].BytesPerSectors)/1024)/1024;
usespace = totspace - freespace;
cout << "\n\n****************************************"
<< "\nLettre du lecteur : " << gDriveInfo[ID].Lecteur
<< "\nType de lecteur : " << gDriveInfo[ID].Type
<< "\nNom de volume : " << gDriveInfo[ID].VolumeName
<< "\nSysteme de fichier : " << gDriveInfo[ID].SysName
<< "\n****************************************"
<< "\nCapacite : " << totspace << " Mo"
<< "\nEspace utiliser : " << usespace << " Mo"
<< "\nEspace libre : " << freespace << " Mo"
<< "\n****************************************\n\n";
}
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.