TOP > カテゴリ > Visual Basic >

条件と一致するファイルを検索して列挙する

条件と一致するファイルを検索して列挙するサンプルです。

サンプルの実行画面

ソースコード

[FindFile.frm]

'■FindFirstFile
'指定のディレクトリ、ファイル名を検索する

'<引数>
'lpFileName      ディレクトリ名かファイル名 (ワイルドカード使用可能)
'lpFindFileData  WIN32_FIND_DATA構造体

'<戻り値>
'正常終了の時ファイル検索ハンドル
'エラーの時INVALID_HANDLE_VALUE

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long


'■FindNextFile
'FindFirstFileに続き次を検索

'<引数>
'hFindFile       ファイル検索ハンドル
'lpFindFileData  WIN32_FIND_DATA構造体

'<戻り値>
'正常終了0以外

Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long


'■FindClose
'ファイル検索ハンドルを解放する

'<引数>
'hFindFile  ファイル検索ハンドル

'<戻り値>
'正常終了0以外

Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long



Private Type FILETIME
    dwLowDateTime As Long        '下位32ビット
    dwHighDateTime As Long       '上位32ビット
End Type

Private Type WIN32_FIND_DATA
  dwFileAttributes As Long       'ファイルの属性
  ftCreationTime As FILETIME     'ファイルの作成日時
  ftLastAccessTime As FILETIME   '最終アクセス日
  ftLastWriteTime As FILETIME    '最終更新日
  nFileSizeHigh As Long          'ファイルサイズ(上位)
  nFileSizeLow As Long           'ファイルサイズ(下位)
  dwReserved0 As Long            '常に0
  dwReserved1 As Long            '常に0
  cFileName As String * 260      'ファイル名
  cAlternate As String * 14      '
End Type

Const INVALID_HANDLE_VALUE = &HFFFFFFFF

Private Sub Command1_Click()

    Dim Ret As Long                 '戻り値
    Dim FileHandle As Long          'ファイルの検索ハンドル
    Dim Win32 As WIN32_FIND_DATA    'WIN32_FIND_DATA構造体
    Dim nFile As String             'ファイル名
    Dim nPath As String             'パス名
    Dim Title As String             'NULL文字を抜いたファイル名
    Dim Top   As Long               'NULL文字の位置

     '初期化
      List1.Clear
 
     'ディレクトリ、ファイル名の設定
      nFile = Text1.Text & Text2.Text
    
     'ファイルを検索してファイル検索ハンドルを取得する
      FileHandle = FindFirstFile(nFile, Win32)
        
      MousePointer = 11
        
      Ret = 1
        
        
   'ファイルがある限りループ
    Do While Ret <> 0
        
        'NULLを取っ払う
           Top = InStr(Win32.cFileName, vbNullChar)
           Title = Left(Win32.cFileName, Top - 1)
               
           List1.AddItem Text1.Text & Title
       
        '続いてファイルを検索する
           Ret = FindNextFile(FileHandle, Win32)
    
    Loop
    
       '検索ハンドルの解放
         Ret = FindClose(FileHandle)

         MousePointer = 0
       
End Sub

ソースコード一式のダウンロード

vbapi_findfile.zip 1.63 KB (1,677 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月06日
記事NO:00413