Rubrik: Dateisystem | 13.07.01 |
FindFirstFile-Funktion Diese Funktion such nach der ersten Datei oder Ordner innerhalb eines angegebenen Verzeichnisses und gibt ein Dateihandle zurück. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 28.853 |
Deklaration:
Declare Function FindFirstFile Lib "kernel32.dll" _ Alias "FindFirstFileA" ( _ ByVal lpFileName As String, _ lpFindFileData As WIN32_FIND_DATA) As Long
Beschreibung:
Diese Funktion such nach der ersten Datei oder Ordner innerhalb eines angegebenen Verzeichnisses. Die Funktion gibt einen Handle zurück, mit dem man mittels der FindNextFile-Funktion nach weitere n Dateien und Ordner suchen kann. Die FindClose- Funktion gibt die Ressourcen und den Handle wieder frei.
Parameter:
lpFileName | Erwartet den Verzeichnisnamen, in welchem die Suche begonnen werden soll. Wildcards wie "?, *., .*, *.*" sind erlaubt. |
lpFindFileData | Erwartet eine WIN32_FIND_DATA-Struktur, in der die Informationen der gefundenen Datei gespeichert werden. |
Rückgabewert:
Konnte eine Datei gefunden werden, wird entspricht der Rückgabewert dem Dateihandle der Datei, andernfalls wird "INVALID_HANDLE_VALUE" zurückgegeben.
Beispiel:
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindNextFile Lib "kernel32" _ Alias "FindNextFileA" ( _ ByVal hFindFile As Long, _ lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Private Const MAX_PATH = 260 Private Const INVALID_HANDLE_VALUE = -1 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type
' Nach allen Dateien und Ordnern inerhalb eines Verzeichnisses suchen Private Sub Command1_Click() Dim Found As WIN32_FIND_DATA, Retval As Long, hFile As Long ' Suchen nach der ersten Datei hFile = FindFirstFile("c:\windows\*.*", Found) ' Wenn keine Datei vorhanden, Vorgang abbrechen If hFile = INVALID_HANDLE_VALUE Then MsgBox "Dieses Verzeichnis enthält keine Dateien oder Ordner", _ vbInformation, "Suche Abbrechen" Exit Sub End If Do Select Case CBool(Found.dwFileAttributes And vbDirectory) Case True ' Ordner Debug.Print "Ordner gefunden: " & Left$(Found.cFileName, InStr(1, _ Found.cFileName, vbNullChar) - 1) Case False ' Datei Debug.Print "Datei gefunden: " & Left$(Found.cFileName, InStr(1, _ Found.cFileName, vbNullChar) - 1) End Select ' Nach der nächsten Datei suchen Retval = FindNextFile(hFile, Found) DoEvents Loop Until Retval = 0 FindClose hFile End Sub