用API函数遍历指定路径的文件功分器
发布时间:2022-09-30 07:16:47
用API函数遍历指定路径的文件
用API函数遍历指定路径的文件 2011: 以下代码演示了如何用Windows API函数遍历指定驱动器、目录的所有文件。其思路是:调出浏览文件夹窗口让用户指定所要搜索的起始路径,然后用查找文件的API函数遍历该目录下及其包含的子目录下的所有文件。本例需要:一个按钮,一个TextBox和一个ListBox,其中,TextBox应设置为多行。 核心代码参照API-Guide的两个例子程序,特此声明。 Option Explicit'查找第一个文件的APIPrivate Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long'查找下一个文件的APIPrivate Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long'获取文件属性的APIPrivate Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long'关闭查找文件的APIPrivate Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long'以下为调用浏览文件夹窗口的APIPrivate Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As LongPrivate Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As LongPrivate Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long'常量Const MAX_PATH = 260Const MAXDWORD = &HFFFFConst INVALID_HANDLE_VALUE = -1Const FILE_ATTRIBUTE_ARCHIVE = &H20Const FILE_ATTRIBUTE_DIRECTORY = &H10Const FILE_ATTRIBUTE_HIDDEN = &H2Const FILE_ATTRIBUTE_NORMAL = &H80Const FILE_ATTRIBUTE_READONLY = &H1Const FILE_ATTRIBUTE_SYSTEM = &H4Const FILE_ATTRIBUTE_TEMPORARY = &H100Const BIF_RETURNONLYFSDIRS = 1Private Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd 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 dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14End Type'定义类(用于浏览文件夹窗口)Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As LongEnd Type'自定义函数Function StripNulls(OriginalStr As String) As String If (InStr(OriginalStr, Chr(0)) > 0) Then OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1) End If StripNulls = OriginalStrEnd Function'自定义函数Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, _DirCount As Integer)Dim FileName As String ' 文件名Dim DirName As String ' 子目录名Dim dirNames() As String ' 目录数组Dim nDir As Integer ' 当前路径的目录数Dim i As Integer ' 循环计数器变量Dim hSearch As Long ' 搜索句柄变量Dim WFD As WIN32_FIND_DATADim Cont As IntegerIf Right(path, 1) <> "\" Then path = path & "\"'搜索子目录 nDir = 0 ReDim dirNames(nDir) Cont = True hSearch = FindFirstFile(path & "*", WFD) If hSearch <> INVALID_HANDLE_VALUE Then Do While Cont DirName = StripNulls(WFD.cFileName) If (DirName <> ".") And (DirName <> "..") Then If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then dirNames(nDir) = DirName DirCount = DirCount + 1 nDir = nDir + 1 ReDim Preserve dirNames(nDir) End If End If Cont = FindNextFile(hSearch, WFD) '获取下一个子目录 Loop Cont = FindClose(hSearch)
- 上一页:国内民用电能表市场分析湘潭
- 下一页:吕随启2014年中国经济挑战大于机遇0食品设备
- 最好牛粪处理设备工作原理和作用博乐感应炉开关盒熔炼炉旋臂吊Trp
- 最好四川再现超级工程世界第一高赤水河大桥顺利泵阀风力发电精密铸件球轴承橡胶设备Trp
- 最好日军慰安妇卓天妹去世性暴力制度受害者刘海电冰箱合成器脉冲仪塑料破碎机针刺机Trp
- 最好2013法国暖通制冷电器展大石桥硅溶胶鹿泉水阀预处理设备Trp
- 最好19日1502昆明市场建筑钢材价格行情测试电缆高频板空气阀色差仪压敏电阻器Trp
- 最火我国塑料模具行业发展有何优势变容二极管封面机锯床燃烧器校平机TRp
- 最好国务院教育督导委开通拖欠教师工资举报平台壁挂机风扇叶净化设备曲轴冲床销钉TRp
- 最火中铝国贸集团召开一届一次职代会暨2020断路器剪刀片瓶盖模具温度保险丝钻床Rra
- 最火环保型制砂机有哪些红星机器推荐Z95倒顺开关海林铝合金梯饲料机扎带Rra
- 最火本周五93号汽油或每升下调5分GPS多功能机浆液阀启东蜗卷弹簧Rra
- 最火地脚螺栓使用在设备上的安装方法有哪些电磁流量计河间梅河口碎浆机真空搅拌机Rra
- 最火新理念新路径新作为电铬铁厚膜电路密封机钽电容器蒸发空冷器Rra