Bonjour
Voici un petit exemple d'utilisation de FindFirstFile() FindNextFile() qui permet de parcourir un repertoire et tous ces sous repertoire. C'est tiré d'une classe que j'ai faite. Les commentaires doivent suffire.
void CRepertoire::ScanRep (char *cRepertoire)
{
//Déclaration des variables
char cChemin [512];
DWORD dwTaille;
WIN32_FIND_DATA wData;
HANDLE hFind;
//Initialisation des variables
//Ajout de \*.* cChemin
strcpy(cChemin, cRepertoire); strcat(cChemin, "\\*.*");
//Initialisation du Handle de recherche de fichiers
hFind = FindFirstFile(cChemin, &wData);
//Suppresion de \*.* a cChemin
strcpy(cChemin, cRepertoire);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if(wData.cFileName[0] != '.')
{
//Increment la barre de progression
//Si C'est un répertoire
if (wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
//puisque c'est un repertoire, on recupere la nouvelle adresse, et on va rentrer dedans...
strcpy(cChemin, cRepertoire); strcat(cChemin, "\\"); strcat(cChemin, wData.cFileName);
//On rappelle la fonction pour qu'elle analyse le sous répertoire
ScanRep(cChemin);
ulNbRep ++;
// revient un repertoire en arriere
strcpy(cChemin, cRepertoire);
}
//Si non c'est un fichier
else
{
// ce n'est pas un répèrtoire donc le fichier est analysé
strcpy(cChemin, cRepertoire); strcat(cChemin, "\\"); strcat(cChemin, wData.cFileName);
ulNbFichiers ++;
dwTaille = (wData.nFileSizeHigh * (MAXDWORD+1)) + wData.nFileSizeLow;
ulTailleMo += (int)(dwTaille/1048576);
}
}
} while ( FindNextFile ( hFind , &wData ) ) ;
}
FindClose( hFind );
}
Bon courrage.