|
▼kanabun さん:
ちょっとだけお邪魔します。
宣言部分だけ何とかなりそうなので一応書いておきます。
既に、作成しておられるならこの書き込みは必要ありませんので
無視して結構です。
>これについての説明が Web にはあまり転がっていないようで、
>トライできてません。
という事なので、探してみましたが本当にあまり無いですね。
で、ヘッダーファイルから拾いました。
Public Enum FINDEX_INFO_LEVELS
FindExInfoStandard
FindExInfoMaxInfoLevel
End Enum
Public Enum FINDEX_SEARCH_OPS
FindExSearchNameMatch
FindExSearchLimitToDirectories
FindExSearchLimitToDevices
FindExSearchMaxSearchOp
End Enum
'多分lpSearchFilterは0で良いと思います。
'FindExInfoStandard を使用する場合第3引数はWIN32_FIND_DATAを
'返しますのでそのようにしてます。
Public Declare Function FindFirstFileEx Lib "kernel32.lib" _
(ByVal lpFileName As String, _
ByVal fInfoLevelId As FINDEX_INFO_LEVELS, _
ByRef lpFindFileData As WIN32_FIND_DATA, _
ByVal fSearchOp As FINDEX_SEARCH_OPS, _
ByVal lpSearchFilter As Long, _
ByVal dwAdditionalFlags As Long) As Long
あとはMSDN「FindFirstFileEx 関数」
ht tp://msdn.microsoft.com/ja-jp/library/cc429235.aspx
があれば何とかなりそうです。
見た感じFindFirstFileの代わりにFindFirstFileEx 使うだけで良いのですかね?
テストしてないので念の為、winbase.h内の定義をUPしときます。
'typedef enum _FINDEX_INFO_LEVELS {
' FindExInfoStandard,
' FindExInfoMaxInfoLevel
'} FINDEX_INFO_LEVELS;
'
'typedef enum _FINDEX_SEARCH_OPS {
' FindExSearchNameMatch,
' FindExSearchLimitToDirectories,
' FindExSearchLimitToDevices,
' FindExSearchMaxSearchOp
'} FINDEX_SEARCH_OPS;
'
'#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
'
'WINBASEAPI
'__out
'Handle
'WINAPI
'FindFirstFileExA(
' __in LPCSTR lpFileName,
' __in FINDEX_INFO_LEVELS fInfoLevelId,
' __out LPVOID lpFindFileData,
' __in FINDEX_SEARCH_OPS fSearchOp,
' __reserved LPVOID lpSearchFilter,
' __in DWORD dwAdditionalFlags
' );
'
ここで根性尽きました。よろしければトライしてみて下さい。^ ^;;
>「サブフォルダだけの検索」ができるAPIをご存じありませんか?
ですが、MSDNをさまよってみましたが、findfirstfileexが一番可能性
ありそうな気はします?
|
|