|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Visual Basic File API Routines SearchTreeForFile: Search a Drive to Locate a Specific File |
||
Posted: | Saturday June 12, 1999 | |
Updated: | Monday December 26, 2011 | |
Applies to: | VB4-32, VB5, VB6 | |
Developed with: | VB6, Windows NT4 | |
OS restrictions: | Requires Imagehlp.dll | |
Author: | Eduardo Morcillo | |
Related: |
FindFirstFile: Save a Recursive Search of All Drives to Disk FindFirstFile: Save a Recursive Search of Specified Drives to Disk FindFirstFile: Performance Comparison - FSO vs. API |
|
Prerequisites |
Imagehlp.dll. On NT, requires version 4.0 or later. On Win9x, requires Windows 95 or later. The DLL is available as a redistributable for Windows 95x. |
|
This is possibly one of the simplest methods to locate a
specific file on a drive, given the filename and drive letter. Returns the full path to the file, or the original string passed (Trim$(x)
= ""). Just place the code in the form or module as appropriate for your need.
Taken from a msnews.winapi posting by Eduardo Morcillo. To search for multiple file types (i.e. a search for all *.frm;*.bas files) by specifying such a pattern as the extension of interest, see FindFirstFile: Recursive File Search for Single or Multiple File Types (minimal code) and FindFirstFile: Recursive File Search Including/Excluding Single or Multiple File Types (minimal code). |
BAS Module Code |
None. |
|
Form Code |
To a form with a command button, add the following code: |
|
Option Explicit '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved. ' Some pages may also contain other copyrights by the author. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Distribution: You can freely use this code in your own ' applications, but you may not reproduce ' or publish this code on any web site, ' online service, or distribute as source ' on any media without express permission. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Private Const MAX_PATH As Long = 260 Private Declare Function SearchTreeForFile Lib "imagehlp" _ (ByVal sRootPath As String, _ ByVal InputPathName As String, _ ByVal OutputPathBuffer As String) As Boolean Private Sub Command1_Click() Dim sFile2Find As String Dim sRootPath2Search As String sFile2Find = "msvbvm50.dll" sDrive2Scan = "c:\" Label1.Caption = "Working ..." Label1.Caption = LCase$(GetFileLocation(sDrive2Scan, sFile2Find)) End Sub Private Function GetFileLocation(sDrive2Scan As String, sFile2Find As String) As String 'API returns True if found, or False otherwise. 'If True, sResult holds the full path Dim sResult As String sResult = Space(MAX_PATH) If SearchTreeForFile(sDrive2Scan, sFile2Find, sResult) Then GetFileLocation = Left(sResult, InStr(sResult, vbNullChar) - 1) Else GetFileLocation = "File was not found. Error: " & Err.LastDllError End If End Function |
Comments |
Wildcards are not permitted in the file name to locate. But because the data is cached, subsequent searches along the same path are instantaneous. |
|
|
|
|||||
|
|||||
|
|||||
Copyright ©1996-2011 VBnet and Randy Birch. All Rights Reserved. |