Opis funkcji API FindNextFile (...)
Funkcja FindNextFile(...) kontynuje wyszukiwanie plików i folderów, z tymi samymi kryteriami z jakimi
wywołano funkcję wyszukującą FindFirstFile(...)
która przy powodzeniu, (gdy zostanie znaleziony plik lub folder pasujący do wzorca), zwraca uchwyt wyszukiwania,
a w strukturze WIN32_FIND_DATA informacje
o znalezionym pliku lub folderze. Aby kontynuować wyszukiwanie zwrócony uchwyt wyszukiwania powinniśmy przekazać
do funkcji FindNextFile(...) w celu wyszukania kolejnego pliku lub folderu z zachowanie tych samych kryteriów wyszukiwania.
Gdy kończymy wyszukiwanie należy przekazać uchwyt wyszukiwania do funkcji
FindClose(...), która zamknie niepotrzebny już uchwyt wyszukiwania.
Public Declare Function FindNextFile _ Lib "kernel32" Alias "FindNextFileW" _ (ByVal hFindFile As Long, _ lpFindFileData As WIN32_FIND_DATA) As Long
- argumenty:
- hFindFile
- uchwyt wyszukiwania zwrócony przez wywołaną funkcję wyszukującą FindFirstFile(...) umożliwia kontynuowanie wyszukiwanie plików i folderów, z tymi samymi kryteriami które zostały użyte do utworzenia uchwytu wyszukiwania przekazanego w argumencie hFindFile.
- lpFindFileData
- Wskaźnik do struktury WIN32_FIND_DATA, zawierającej informacje o znalezionym pliku lub katalogu.
- zwraca:
-
przy powodzeniu (znalezieniu pliku lub folderu), zwraca wartość różną od Zera, a w strukturze WIN32_FIND_DATA informacje o znalezionym pliku lub folderze. Jeśli funkcja się nie powiedzie, wartość zwracana wynosi ZERO, a zawartość struktury WIN32_FIND_DATA jest nieokreślona. Możemy wtedy sprawdzić właściwość LastDllError obiektu Err. Jeżeli zwrócona wartość równa jest stałej ERROR_NO_MORE_FILES = 18 oznacza to, że nie można znaleźć więcej pasujących plików lub folderów Pozostaje wtedy zamknąć uchwyt wyszukiwania za pomocą funkcji FindClose(...).
Uwagi.
- Dokładniejszy opis struktury WIN32_FIND_DATA można znaleźć na stronie Struktura WIN32_FIND_DATA
- By zakończyć wyszukiwanie należy zamknąć niepotrzebny już uchwyt wyszukiwania za pomocą funkcji FindClose(...). Nie należy do tego celu stosować funkcji CloseHandle(...).