Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Jun 29, 2000

Search a file in a directory tree using the Imagehlp DLL

You can search a file in all the subdirectories of a given drive in VB using a recursive routine based on the Dir$ function, the FileSystemObject component, or the FindFirstFile/FindNextFile API functions. There is a fourth way you might want to try out, based on the SearchTreeForFile function embedded in the ImageHlp DLL. The following routine takes advantage of this API function:

Private Declare Function SearchTreeForFile Lib "imagehlp.dll" (ByVal sRootPath _
    As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) _
    As Boolean

' search a file on directory subtree
'
' returns the complete path+name of the filename
' or a null string if the filename hasn't been found
' only the first occurrence of the file is returned
'
' ROOTDIR can be a drive root dir (e.g. "C:\") or a subdir ("C:\DOCS")

Function SearchFileInDirTree(ByVal rootDir As String, ByVal Filename As String) _
    As String
    ' this is the max length for a filename
    Dim buffer As String * 260
    If SearchTreeForFile(rootDir, Filename, buffer) Then
        ' a non-zero return value means success
        SearchFileInDirTree = Left$(buffer, InStr(buffer, vbNullChar) - 1)
    End If
End Function
Note that when you use the SearchTreeForFile API function your program must wait until the file is found or the entire hard disk has been scanned. For this reason you might want to display a warning to the end user, explaining that the search might take a long time. For this reason this routine is especially useful to quickly scan a smaller directory subtree, rather than an entire drive.
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date