Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Recursivly Scan Dir

583
29 апреля 2003 года
#define
150 / / 03.12.2002
Помогите пожалуйста с рекурсией.. Необходимо сканировать указанную директорию со всеми подкаталогами и выводить MessageBox с текущим именем файла. Другими словами надо выводить имена [с путями] всех файлов и каталогах рекурсивно в указанной директории и во всех ее подкаталогах. Чего-то у меня никак не выходит.. Что у меня не правильно и как сделать лучше? Вот что у меня на данный момент:
Код:
.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
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог