4.指定のファイルパスを検索する |
1.指定のファイルパスを検索する 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定: 参照設定方法参照 使用 API:SearchTreeForFile その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.指定のファイルパスを検索する |
Option Explicit 'SampleNo=141 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() Label3.Caption = "" DoEvents Label3.Caption = fFilePath(Text2.Text, Text1.Text) ' Dim myPath As String ' myPath = fFilePath("C:\Program Files", "VB6.EXE") Debug.Print 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の特徴に応じた使い方をして下さい。 当然ながらヌル値を指定するとエラーとなりますので事前に処置しておいて下さい。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |