设为首页 收藏本站 English

当前位置: 庆泰五金网 >> 充气机

用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)

深圳吴舍软装设计有限公司

金华市婺城区金达停车场

聊城龙泽钢材有限责任公司

山西神匠雕塑有限公司

扬中市世纪联讯软件有限公司

乾程知识产权有限公司

武汉佐罗印务有限公司

马鞍山市白云环保设备有限公司(明女士)

丹东冠人电子有限公司

合肥维奥汽摩配件厂

友情链接