国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用API函數遍歷指定驅動器、目錄的文件

2019-11-18 17:34:25
字體:
來源:轉載
供稿:網友
以下代碼演示了如何用WindowsAPI函數遍歷指定驅動器、目錄的所有文件。其思路是:調出瀏覽文件夾窗口讓用戶指定所要搜索的起始路徑,然后用查找文件的API函數遍歷該目錄下及其包含的子目錄下的所有文件。本例需要:一個按鈕,一個TextBox和一個ListBox,其中,TextBox應設置為多行。
核心代碼參照API-Guide的兩個例子程序,特此聲明。

OptionExplicit

'查找第一個文件的API
ConstMAX_PATH=260
ConstMAXD
Word=&HFFFF
ConstINVALID_HANDLE_VALUE=-1
ConstFILE_ATTRIBUTE_ARCHIVE=&H20
ConstFILE_ATTRIBUTE_DIRECTORY=&H10
ConstFILE_ATTRIBUTE_HIDDEN=&H2
ConstFILE_ATTRIBUTE_NORMAL=&H80
ConstFILE_ATTRIBUTE_READONLY=&H1
ConstFILE_ATTRIBUTE_SYSTEM=&H4
ConstFILE_ATTRIBUTE_TEMPORARY=&H100
ConstBIF_RETURNONLYFSDIRS=1
PrivateTypeFILETIME
dwLowDateTimeAsLong
dwHighDateTimeAsLong
EndType

'定義類(用于查找文件)
PrivateTypeWIN32_FIND_DATA
dwFileAttributesAsLong
ftCreationTimeAsFILETIME
ftLastaccessTimeAsFILETIME
ftLastWriteTimeAsFILETIME
nFileSizeHighAsLong
nFileSizeLowAsLong
dwReserved0AsLong
dwReserved1AsLong
cFileNameAsString*MAX_PATH
cAlternateAsString*14
EndType

'定義類(用于瀏覽文件夾窗口)
PrivateTypeBrowseInfo
hWndOwnerAsLong
pIDLRootAsLong
pszDisplayNameAsLong
lpszTitleAsLong
ulFlagsAsLong
lpfnCallbackAsLong
lParamAsLong
iImageAsLong
EndType

'自定義函數
FunctionStrIfGetFileAttributes(path&DirName)AndFILE_ATTRIBUTE_DIRECTORYThen
dirNames(nDir)=DirName
DirCount=DirCount 1
nDir=nDir 1
ReDimPreservedirNames(nDir)
EndIf
EndIf
Cont=FindNextFile(hSearch,WFD)'獲取下一個子目錄
Loop
Cont=FindClose(hSearch)
EndIf
'遍歷目錄并累計文件總數
hSearch=FindFirstFile(path&SearchStr,WFD)
Cont=True
IfhSearch<>INVALID_HANDLE_VALUEThen
WhileCont
FileName=StripNulls(WFD.cFileName)
If(FileName<>".")And(FileName<>"..")Then
FindFilesAPI=FindFilesAPI (WFD.nFileSizeHigh*MAXDWORD) WFD.nFileSizeLow
FileCount=FileCount 1
List1.AddItempath&FileName
EndIf
Cont=FindNextFile(hSearch,WFD)'獲取下一個文件
Wend
Cont=FindClose(hSearch)
EndIf
'如果子目錄存在則遍歷之
IfnDir>0Then
Fori=0TonDir-1
FindFilesAPI=FindFilesAPI FindFilesAPI(path&dirNames(i)&"/",_
SearchStr,FileCount,DirCount)
Nexti
EndIf
EndFunction

'查找按鈕代碼
SubCommand1_Click()
DimSearchPathAsString,FindStrAsString
DimFileSizeAsLong
DimNumFilesAsInteger,NumDirsAsInteger
DimiNullAsInteger,lpIDListAsLong,lResultAsLong
DimsPathAsString,udtBIAsBrowseInfo
WithudtBI
'設置瀏覽窗口
.hWndOwner=Me.hWnd
'返回選中的目錄
.ulFlags=BIF_RETURNONLYFSDIRS
EndWith

'調出瀏覽窗口
lpIDList=SHBrowseForFolder(udtBI)
IflpIDListThen
sPath=String$(MAX_PATH,0)
'獲取路徑
SHGetPathFromIDListlpIDList,sPath
'釋放內存
CoTaskMemFreelpIDList
iNull=InStr(sPath,vbNullChar)
IfiNullThen
sPath=Left$(sPath,iNull-1)
EndIf
EndIf

Screen.MousePointer=vbHourglass
List1.Clear
SearchPath=sPath'選中的目錄為搜索的起始路徑
FindStr="*.*"'搜索所有類型的文件(此處可另作定義)
FileSize=FindFilesAPI(SearchPath,FindStr,NumFiles,NumDirs)
Text1.Text="查找到的文件數:"&NumFiles&vbCrLf&"查找的目錄數:"&_
NumDirs 1&vbCrLf&"文件大小總共為:"&vbCrLf&_
Format(FileSize,"#,###,###,##0")&"字節"
Screen.MousePointer=vbDefault
EndSub->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉门市| 平陆县| 柘荣县| 星座| 荔浦县| 潜山县| 涡阳县| 始兴县| 英吉沙县| 繁峙县| 浏阳市| 康平县| 麻城市| 曲靖市| 新营市| 泊头市| 伊金霍洛旗| 女性| 彭阳县| 曲靖市| 金沙县| 六盘水市| 黄石市| 贡山| 黄梅县| 鄂托克前旗| 安陆市| 秦安县| 鲁山县| 凉山| 花垣县| 玛多县| 游戏| 拉孜县| 姚安县| 林芝县| 大城县| 自贡市| 厦门市| 安西县| 屯门区|