国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何用WindowsAPI函數(shù)遍歷指定驅(qū)動(dòng)器、目錄的所有文件
關(guān)鍵字/核心提示:[標(biāo)簽:副標(biāo)題]
以下代碼演示了如何用WindowsAPI函數(shù)遍歷指定驅(qū)動(dòng)器、目錄的所有文件。其思路是:調(diào)出瀏覽文件夾窗口讓用戶指定所要搜索的起始路徑,然后用查找文件的API函數(shù)遍歷該目錄下及其包含的子目錄下的所有文件。本例需要:一個(gè)按鈕,一個(gè)TextBox和一個(gè)ListBox,其中,TextBox應(yīng)設(shè)置為多行?! ?..
以下代碼演示了如何用WindowsAPI函數(shù)遍歷指定驅(qū)動(dòng)器、目錄的所有文件。其思路是:調(diào)出瀏覽文件夾窗口讓用戶指定所要搜索的起始路徑,然后用查找文件的API函數(shù)遍歷該目錄下及其包含的子目錄下的所有文件。本例需要:一個(gè)按鈕,一個(gè)TextBox和一個(gè)ListBox,其中,TextBox應(yīng)設(shè)置為多行。
  核心代碼參照API-Guide的兩個(gè)例子程序,特此聲明。
  
  OptionExplicit
  
  '查找第一個(gè)文件的API
  PrivateDeclareFunctionFindFirstFileLib"kernel32"Alias"FindFirstFileA"(ByVallpFileNameAsString,lpFindFileDataAsWIN32_FIND_DATA)AsLong
  '查找下一個(gè)文件的API
  PrivateDeclareFunctionFindNextFileLib"kernel32"Alias"FindNextFileA"(ByValhFindFileAsLong,lpFindFileDataAsWIN32_FIND_DATA)AsLong
  '獲取文件屬性的API
  PrivateDeclareFunctionGetFileAttributesLib"kernel32"Alias"GetFileAttributesA"(ByVallpFileNameAsString)AsLong
  '關(guān)閉查找文件的API
  PrivateDeclareFunctionFindCloseLib"kernel32"(ByValhFindFileAsLong)AsLong
  '以下為調(diào)用瀏覽文件夾窗口的API
  PrivateDeclareSubCoTaskMemFreeLib"ole32.dll"(ByValhMemAsLong)
  PrivateDeclareFunctionlstrcatLib"kernel32"Alias"lstrcatA"(ByVallpString1AsString,ByVallpString2AsString)AsLong
  PrivateDeclareFunctionSHBrowseForFolderLib"shell32"(lpbiAsBrowseInfo)AsLong
  PrivateDeclareFunctionSHGetPathFromIDListLib"shell32"(ByValpidListAsLong,ByVallpBufferAsString)AsLong
  
  '常量
  ConstMAX_PATH=260
  ConstMAXDWORD=&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
  
  '自定義函數(shù)
  FunctionStripNulls(OriginalStrAsString)AsString
  If(InStr(OriginalStr,Chr(0))>0)Then
  OriginalStr=Left(OriginalStr,InStr(OriginalStr,Chr(0))-1)
  EndIf
  StripNulls=OriginalStr
  EndFunction
  
  '自定義函數(shù)
  FunctionFindFilesAPI(pathAsString,SearchStrAsString,FileCountAsInteger,_
  DirCountAsInteger)
  DimFileNameAsString'文件名
  DimDirNameAsString'子目錄名
  DimdirNames()AsString'目錄數(shù)組
  DimnDirAsInteger'當(dāng)前路徑的目錄數(shù)
  DimiAsInteger'循環(huán)計(jì)數(shù)器變量
  DimhSearchAsLong'搜索句柄變量
  DimWFDAsWIN32_FIND_DATA
  DimContAsInteger
  IfRight(path,1)<>""Thenpath=path&""
  '搜索子目錄
  nDir=0
  ReDimdirNames(nDir)
  Cont=True
  hSearch=FindFirstFile(path&"*",WFD)
  IfhSearch<>INVALID_HANDLE_VALUEThen
  DoWhileCont
  DirName=StripNulls(WFD.cFileName)
  If(DirName<>".")And(DirName<>"..")Then
  IfGetFileAttributes(path&DirName)AndFILE_ATTRIBUTE_DIRECTORYThen
  dirNames(nDir)=DirName
  DirCount=DirCount1
  nDir=nDir1
  ReDimPreservedirNames(nDir)
  EndIf
  EndIf
  Cont=FindNextFile(hSearch,WFD)'獲取下一個(gè)子目錄
  Loop
  Cont=FindClose(hSearch)
  EndIf
  '遍歷目錄并累計(jì)文件總數(shù)
  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=FileCount1
  List1.AddItempath&FileName
  EndIf
  Cont=FindNextFile(hSearch,WFD)'獲取下一個(gè)文件
  Wend
  Cont=FindClose(hSearch)
  EndIf
  '假如子目錄存在則遍歷之
  IfnDir>0Then
  Fori=0TonDir-1
  FindFilesAPI=FindFilesAPIFindFilesAPI(path&dirNames(i)&"",_
  SearchStr,FileCount,DirCount)
  Nexti
  EndIf
  EndFunction
  
  '查找按鈕代碼
  SubCommand1_Click()
  DimSearchPathAsString,FindStrAsString
  DimFileSizeAsLong
  DimNumFilesAsInteger,NumDirsAsInteger
  DimiNullAsInteger,lpIDListAsLong,lResultAsLong
  DimsPathAsString,udtBIAsBrowseInfo
  WithudtBI
  '設(shè)置瀏覽窗口
  .hWndOwner=Me.hWnd
  '返回選中的目錄
  .ulFlags=BIF_RETURNONLYFSDIRS
  EndWith
  
  '調(diào)出瀏覽窗口
  lpIDList=SHBrowseForFolder(udtBI)
  IflpIDListThen
  sPath=String$(MAX_PATH,0)
  '獲取路徑
  SHGetPathFromIDListlpIDList,sPath
  '釋放內(nèi)存
  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="查找到的文件數(shù):"&NumFiles&vbCrLf&"查找的目錄數(shù):"&_
  NumDirs1&vbCrLf&"文件大小總共為:"&vbCrLf&_
  Format(FileSize,"#,###,###,##0")&"字節(jié)"
  Screen.MousePointer=vbDefault
  EndSub->
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用API函數(shù)遍歷指定驅(qū)動(dòng)器、目錄文件
素?cái)?shù)回形散點(diǎn)圖
JackSon學(xué)習(xí)筆記(二)
python基礎(chǔ)之循環(huán)遍歷文件夾
python 遍歷文件夾
四十篇辦公自動(dòng)化文章的精華總結(jié),代碼可直接套用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服