FindFirstFile & FindNextFile

cs_Stormy Messages postés 255 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 16 janvier 2007 - 1 août 2003 à 22:21
cs_Vermifuge Messages postés 75 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 18 septembre 2006 - 5 août 2003 à 13:42
Quelqu'un aurait-il la gentillesse de me montrer comment coder une fonction permettant de lister un répertoire quelconque. Le but de cette fonction est de renvoyer dans une ListBox (on va dire handle hWnd) le résultat de chaque élément et sous-repertoire. Le problm est que je ne sais pas comment établir les fonctions FindFirstFile, FindNextFile et Close. Merci ++

2 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
2 août 2003 à 11:23
Elle arrive a point ta demande. Je voulais l'ajouter dans ma dll pour VB sauf que je n'ai pas de proj vb pour tester. Faudrait que je sache si la listbox vb acceptera les insert en string NULL finissante. Je vais commencer a l'ecrire, tu pourrais preparer un mini truc en vb avec juste une lisbox et un bouton pour appeler la dll ? On se le fait a 2 et tu auras le code complet quand sera au point.
Dis moi si ok.
BruNews, ciao...
0
cs_Vermifuge Messages postés 75 Date d'inscription samedi 23 mars 2002 Statut Membre Dernière intervention 18 septembre 2006
5 août 2003 à 13:42
Bon, c'est pas très compliqué. D'abord tu dois appeler la fonction FindFirstFile( LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData ); Le premier argument est un pointeur vers une chaine de caractère de type "C:\Test1\Test2\*.*" avec un caractère null en fin de chaine, et le deuxième est un pointeur vers un structure WIN32_FIND_DATA dont voici la composition :
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;

Pour FindNextFile, c'est la même chose, sauf qu'en premier paramètre tu met le Handle donné par FindFirstFile à la place de la chaine de caractère.
Chez les 2 fonction, si elle réussie la valeur de retour est TRUE, sinon c'est FALSE, et un GetLastError renvoie ERROR_NO_MORE_FILES si il n'y a plus de fichiers du type choisi.

Je pense que c'est assé complet, si t'as besoin d'aide, tu peux me mailler à vermi-fuge@libertysurf.fr

@+
Vermifuge
0