|
皆さん、こんにちは。
>>Windows CEなら有効なのかも知れません。
>
>情報ありがとうございます。
>何となくですが、ダメっぽいですね。
久しぶりに脳味噌を使って見ました。
一応取れるようですけど、どうなんですかね?
下記のコードではディレクトリのみが取れるようです。
熊谷隆史 さんのリンク先を見ると、なぜかはわかりませんけど。
>>Windows CEなら有効なのかも知れません。
とリンク先をみて萎えてしまいました。^ ^;;
XP SP3 VB6で作成
Private Sub Command1_Click()
Dim cnt As Long
Dim sBuf As String
Call EnumSubDir(cnt, "C:\hogehoge\*")
End Sub
'標準モジュール
'宣言省略
'渡された直下のフォルダを列挙する
Public Sub EnumSubDir(ByRef cnt As Long, ByVal dirname As String)
Dim fd As WIN32_FIND_DATA
Dim h As Long
Dim sBuf As String
Dim lRet As Long
'ハンドル取得
h = FindFirstFileEx(dirname, FINDEX_INFO_LEVELS.FindExInfoStandard, _
fd, FINDEX_SEARCH_OPS.FindExSearchLimitToDirectories, vbNull, 0&)
If INVALID_HANDLE_VALUE = h Then
Exit Sub
End If
Do
sBuf = EditBuf(fd.cFileName)
If fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY Then
' ディレクトリの場合
If (sBuf <> ".") And (sBuf <> "..") Then
' .と..は処理しない
Debug.Print "ディレクトリ - " & sBuf
End If
Else ' ディレクトリ以外の場合(ファイル)
Debug.Print "ファイル - " & sBuf
End If
'次のファイルを検索する
lRet = FindNextFile(h, fd)
Loop Until lRet <= 0
'ハンドルを閉じる
Call FindClose(h)
End Sub
Public Function EditBuf(Buf As String) As String
Dim i As Long
i = InStr(Buf, vbNullChar)
If i <> 0 Then
EditBuf = Left$(Buf, i - 1)
Else
EditBuf = Buf
End If
End Function
私も最近はC#かVB2008です。どうも万年初心者になりそうですけど。
でもframework必須というのが嫌といえば嫌ですね。
|
|