Nouvelle version cherche les lecteurs

Contenu du snippet

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"; }

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.