● 指定したファイルを追加する ●

便利といえば便利。特定ディレクトリ以下の検索をする場合、こちらを使用した方が速いかも。リストボックスの Visible を False にして値を取るという方法もありかと。その他、データをソートさせたい時はリストボックスにソートさせて値を取ると非常に楽。その時は当然リストボックスの Visible は False である。

'リストボックス
Private Declare Function DlgDirList Lib "user32" Alias "DlgDirListA" (ByVal hDlg As Long, ByVal lpPathSpec As String, ByVal nIDListBox As Long, ByVal nIDStaticPath As Long, ByVal wFileType As Long) As Long

'コントロール識別子取得
Private Declare Function GetDlgCtrlID Lib "user32" (ByVal hWnd As Long) As Long

Private Const DDL_ARCHIVE = &H20     'アーカイブファイル
Private Const DDL_DIRECTORY = &H10   'サブディレクトリ
Private Const DDL_DRIVES = &H4000    'ドライブ
Private Const DDL_EXCLUSIVE = &H8000 '指定された属性を持つファイル。デフォルトは、読み書き専用
Private Const DDL_HIDDEN = &H2       '隠しファイル
Private Const DDL_READONLY = &H1     '読取専用ファイル
Private Const DDL_READWRITE = &H0    '他の属性を持たない、読み書き可能なファイル
Private Const DDL_SYSTEM = &H4       'システムファイル
Private Const DDL_POSTMSGS = &H2000  'ポストメッセージをアプリケーションキューに送る

'---------------------------------------------------------------------------
' 関数名: AddTargetFile
' 機能 : リストボックスに検索したファイルを追加する
' 引数 : (in)hParent  … 呼び出しウィンドウのハンドル
'         (in)hList    … リストボックスのハンドル
'         (in)Target … 検索対象ファイル
' 返り値: 1…正常終了   0…異常終了
'---------------------------------------------------------------------------
Public Function AddTargetFile(ByVal hParent As Long, ByVal hList As Long, _
                              ByVal Target As String) As Long

    'ファイルとディレクトリを取得
    AddTargetFile = DlgDirList(hParent, Target, GetDlgCtrlID(hList), 0&, _
                              DDL_READWRITE Or DDL_DIRECTORY)

End Function

呼び出し側。

Private Sub Form_Load()

    Call AddTargetFile(Me.hWnd, List1.hWnd, Environ("WINDIR") & "\*.txt")

End Sub

戻る