Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0602: Eine Datei suchen mithilfe der SearchTreeForFile Funktion

 von 

Beschreibung 

Tipp 128 und Tipp 414 zeigen, wie man mit VB eine Datei suchen kann. Dieser Tipp zeigt, wie es einfacher geht. Der Nachteil liegt dabei aber klar auf der Hand: Das Programm friert solange ein, bis die Datei gefunden ist.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

SearchTreeForFile

Download:

Download des Beispielprojektes [2,16 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"


' Datei rekursiv suchen
Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _
        ByVal RootPath As String, ByVal InputPathName As String, _
        ByVal OutputPathBuffer As String) As Long
        
Const MAX_PATH = 160

' rekursive Dateisuche
Public Function FileFind(ByRef hFileName As String, _
    Optional ByVal hPart As String = "C:\") As String
    
    Dim rApi As Long
    Dim hPfad As String
    
    On Error Goto Fehler
    Err.Clear
    
    ' keine Datei übergeben
    If Len(Trim$(hFileName)) = 0 Then Err.Raise 75
    
    ' ZielPfad vorbereiten
    hPfad = String(MAX_PATH, 0)
    
    ' API-Aufruf
    rApi = SearchTreeForFile(hPart, hFileName, hPfad)
    
    ' gefunden ?
    If rApi = 0 Then Err.Raise 76
    
    ' Rückgabewert
    FileFind = Left(hPfad, InStr(hPfad, Chr(0)) - 1)

    Exit Function
Fehler:

    Err.Clear
    FileFind = ""
End Function

Private Sub Command1_Click()
    MsgBox "Notepad wurde gefunden in: " & FileFind("notepad.exe", "C:\Windows\")
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Mischa am 10.06.2009 um 15:22

Hallo.
Ich würde gern wissen wie ich diese Suchfunktion mit
ShellExecute verbinden kann.Also mein Programm soll die Datei automatisch suchen wie im Beispielprojekt aber es soll die datei nachdem es sie gefunden hat auch starten.

Kommentar von Eizvber am 24.08.2004 um 20:13

Nö, gehts nicht, da es eine Api funktion ist. Man müsste das in der DLL ändern. Aber das geht ja bekanntlich nicht, bez. man darf es nicht.

Kommentar von Axel W. am 01.07.2004 um 21:13

Ööhm... ehrlich gesagt, ich hab mir den Tipp nicht sooooooooo genau angeschaut, aber zum, Thema "einfrieren": Kann man da nich einfach rigendwo ein DoEvents reinsetzen?

Kommentar von Nils am 04.03.2004 um 16:38

Bei mir geht das unter WinXP Pro. und VB6.

Kommentar von Jochen Wierum am 29.08.2003 um 10:08

@Nightmare:
Das Programm funktioniert devinitiv auf einem Windows XP Pro Rechner!

Existiert denn die Datei imagehlp.dll im System32 Ordner?

Alles weitere am besten per Mail (JoWi@ActiveVB.de)

Gruß,
Jochen Wierum

Admin @ActiveVB

Kommentar von Nightmare am 28.08.2003 um 22:36

Tja,

leider funktioniert dieses Programme bzw. diese Funktionen unter Windows XP Pro mit VB6 nicht.

Gruß
Nightmare