.data?
hWndFfl dd ? ;хэндл поиска
.data
AppName db "TEST",0
StartD db "C:\dir",0 ;начальная директория сканирования
.code
.............
invoke Scan ADDR StartD
.............
Scan proc dest:DWORD
LOCAL fns:WIN32_FIND_DATA
.data?
PATH db MAX_PATH dup(?)
CDIR db MAX_PATH dup(?)
CFILE db MAX_PATH dup(?)
.code
szText NMF,"No matches found"
szText slash, "\"
szText wildc, "*.*"
invoke lstrcpy, ADDR PATH, dest
invoke lstrcat, ADDR PATH, ADDR slash ;PATH=C:\dir\
invoke lstrcpy, ADDR CDIR, ADDR PATH ;CDIR=PATH
invoke lstrcat, ADDR PATH, ADDR wildc ;PATH=C:\dir\*.*
invoke FindFirstFile, ADDR PATH, ADDR fns
.IF eax==INVALID_HANDLE_VALUE
invoke MessageBox, NULL, ADDR PATH, ADDR NMF, MB_OK
ret
.ENDIF
push eax
pop hWndFfl ;хэндл поиска
invoke FindNextFile, hWndFfl, ADDR fns ;пропустить "."
invoke FindNextFile, hWndFfl, ADDR fns ;пропустить ".."
.WHILE eax!=0
invoke lstrcpy, ADDR CFILE, ADDR CDIR
invoke lstrcat, ADDR CFILE, ADDR fns.cFileName
.IF fns.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY ;если директория
push hWndFfl ;сохранение хэндла поиска
invoke Scan, ADDR CFILE ;рекурсивный вызов
pop hWndFfl ;восстановление хэндла поиска
.ENDIF
invoke MessageBox, NULL, ADDR CFILE, ADDR AppName, MB_OK
invoke FindNextFile, hWndFfl, ADDR fns
.ENDW
invoke FindClose, hWndFfl
ret
Scan endp
Recursivly Scan Dir
Помогите пожалуйста с рекурсией.. Необходимо сканировать указанную директорию со всеми подкаталогами и выводить MessageBox с текущим именем файла. Другими словами надо выводить имена [с путями] всех файлов и каталогах рекурсивно в указанной директории и во всех ее подкаталогах. Чего-то у меня никак не выходит.. Что у меня не правильно и как сделать лучше? Вот что у меня на данный момент: