VBGood网站全文搜索 Google

首页 - 经验之谈 - 查找文件
发表评论(0)作者:Karl Moore, 平台:VB6.0+Win98, 阅读:11445, 日期:2001-06-06
Find That File

Know the filename, but don注释:t know the directory?

Give your application a little more intelligence, with this incredibly compact find-file routine. It注释:ll do all the hard work for you - just pass it a filename and it注释:ll return the full and completed path.

This one works by calling a function in the IMAGEHLP DLL - and search through all subdirectories of the specified path, looking for the passed filename. It returns the full and completed path of your file.

To use this code, call FindFile, passing in the root path and filename. The function returns the full and completed path - or a null string if nothing was found.


MsgBox FindFile("c:\", "NWind.mdb")Code

Declare Function SearchTreeForFile Lib "IMAGEHLP.DLL" _
    (ByVal lpRootPath As String, _
    ByVal lpInputName As String, _
    ByVal lpOutputName As String) As Long
Public Const MAX_PATH = 260

Public Function FindFile(RootPath As String, _
    FileName As String) As String
    Dim lNullPos As Long
    Dim lResult As Long
    Dim sBuffer As String
    On Error GoTo FileFind_Error
    注释:Allocate buffer
    sBuffer = Space(MAX_PATH * 2)
    注释:Find the file
    lResult = SearchTreeForFile(RootPath, FileName, sBuffer)
    注释:Trim null, if exists
    If lResult Then
        lNullPos = InStr(sBuffer, vbNullChar)
        If Not lNullPos Then
            sBuffer = Left(sBuffer, lNullPos - 1)
        End If
        注释:Return filename
        FindFile = sBuffer
        注释:Nothing found
        FindFile = vbNullString
    End If
    Exit Function
    FindFile = vbNullString
End FunctionTip by Karl Moore