Kontakt
DSVGO
Historie | |
26.03.2001 | Hinzugefügt: Laufwerke bestimmen; Beispiel angepasst |
15.07.2000 | Komplexeres Beispiel hinzugefügt |
29.06.2000 | Erste Version: Verzeichnis durchsuchen |
Manchmal ist es nötig, eine bestimmte Datei im Filesystem zu lokalisieren. Da stellen sich zwei Probleme:
Die unten vorgestellten Funktionen LogicalDrives und FindFile beantworten genau diese Fragen.
Alle vorhandenen Laufwerke werden nach einer bestimmten Programmdatei durchsucht, welche ggf. auch gestartet wird:
Dim Path As String Dim Laufwerk As Variant For Each Laufwerk In LogicalDrives Path = FindFile(Laufwerk, "programm.exe") If Len(Path) Then Shell Path, vbMaximizedFocus Exit For End If Next Laufwerk
Die folgende Funktion gibt eine Aufzählung aller logischen Laufwerke (im Format "X:") zurück:
'Deklarationsteil: Private Declare Function GetLogicalDriveStringsA Lib "kernel32" ( _ ByVal nBufferLength As Long, _ ByVal lpBuffer As String _ ) As Long 'Funktion: Function LogicalDrives() As Collection Dim s As String * 128 Dim i As Long 'API aufrufen: GetLogicalDriveStringsA Len(s), s i = InStr(s, vbNullChar & vbNullChar) 'Länge 'Collection füllen: Set LogicalDrives = New Collection For i = 1 To i Step 4 LogicalDrives.Add Mid$(s, i, 2) Next i End Function
Mit folgender Routine kann ein gegebenes Verzeichnis Path einschließlich Unterordnern nach einer bestimmten Datei File durchsucht werden:
'Deklarationsteil: Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _ ByVal RootPath As String, _ ByVal FileName As String, _ ByVal OutputPath As String _ ) As Long 'Funktion: Function FindFile( _ ByVal Path As String, _ ByVal File As String _ ) As String Dim s As String * 1024 If SearchTreeForFile(Path, File, s) _ Then FindFile = Left$(s, InStr(s, vbNullChar) - 1) End Function
Die Funktion gibt bei Erfolg den vollständigen Pfad der ersten gefundenen Datei zurück. Sollen alle Dateien gemäß eines Suchpatterns gefunden werden, so ist übrigens deutlich mehr Aufwand nötig (siehe FindFiles).
© Jost Schwider, 29.06.2000-26.03.2001 - http://vb-tec.de/findfile.htm