指定したファイルのパスを取得する |
指定したファイルのパスを取得する(サブフォルダー以下検索) (141) | |
Option Explicit 'SampleNo=141 WindowsXP VB6.0(SP5) 2002.05.17 '指定されたファイルのディレクトリツリーを検索します。 Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _ (ByVal RootPath As String, ByVal InputPathName As String, _ ByVal OutputPathBuffer As String) As Long Private Sub Command1_Click() Dim myPath As String '最後の ¥ は付けなくてもOK myPath = fFilePath("C:\Windows\", "Regedit.exe") End Sub '************************************************************** ' 指定されたファイルのディレクトリツリーを検索します ' 使用例 :myPath = fFilePath("C:\Windows\", "Regedit.exe") ' RootFolder :検索開始フォルダー名 ' FileName :検索するファイル名 ' 返り値 :見つかったファイルのフルパス '************************************************************** Private Function fFilePath(ByVal RootFolder As String, _ ByVal FileName As String) As String Dim Ret As Long Dim strBuffer As String strBuffer = String$(256, Chr$(0)) Ret = SearchTreeForFile(RootFolder, FileName, strBuffer) If Ret Then fFilePath = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1) Else fFilePath = "File Not Found" End If End Function |
|
SearchTreeForFile APIを使用すればご覧のように簡単な記述でファイルが検索できま すが、同じ名前のファイルが複数存在する場合は、最初に見つかったファイルのパスしか 返しません。 又、カレントフォルダーを指定するとカレントフォルダーに見つからない場合ルートディレクトリ から探します。 スタートフォルダーは解る範囲で絞り込んで記入した方が検索時間は早いです。 色々、試して頂いてこのAPIの特徴に応じた使い方をして下さい。 当然ながらヌル値を指定するとエラーとなりますので事前に処置しておいて下さい。 |
2002/05/18