国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何運(yùn)用VB.NET API函數(shù)遍歷實(shí)例

開發(fā) 后端
文章介紹如何用Windows VB.NET API函數(shù)遍歷指定驅(qū)動(dòng)器、目錄的所有文件,運(yùn)用API函數(shù)遍歷該目錄以及參照API-Guide的例子程序。

VB.NET經(jīng)過長時(shí)間的發(fā)展,很多用戶都很了解VB.NET了,這里我來拓展介紹一下VB.NET API函數(shù)的運(yùn)用,讓大家更好的深入了解。

以下代碼演示了如何用Windows VB.NET API函數(shù)遍歷指定驅(qū)動(dòng)器、目錄的所有文件。其思路是:調(diào)出瀏覽文件夾窗口讓用戶指定所要搜索的起始路徑,然后用查找文件的API函數(shù)遍歷該目錄下及其包含的子目錄下的所有文件。本例需要:一個(gè)按鈕,一個(gè)TextBox和一個(gè)ListBox,其中,TextBox應(yīng)設(shè)置為多行。
核心代碼參照API-Guide的兩個(gè)例子程序,特此聲明。

Option Explicit

  1. '查找***個(gè)文件的API  
  2. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" 
    (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long  
  3. '查找下一個(gè)文件的API  
  4. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" 
    (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long  
  5. '獲取文件屬性的API  
  6. Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" 
    (ByVal lpFileName As String) As Long  
  7. '關(guān)閉查找文件的API  
  8. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long  
  9. '以下為調(diào)用瀏覽文件夾窗口的API  
  10. Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)  
  11. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" 
    (ByVal lpString1 As String, ByVal lpString2 As String) As Long  
  12. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long  
  13. Private Declare Function SHGetPathFromIDList Lib "shell32" 
    (ByVal pidList As Long, ByVal lpBuffer As String) As Long  
  14. '常量  
  15. Const MAX_PATH = 260 
  16. Const MAXDWORD = &HFFFF  
  17. Const INVALID_HANDLE_VALUE = -1  
  18. Const FILE_ATTRIBUTE_ARCHIVE = &H20  
  19. Const FILE_ATTRIBUTE_DIRECTORY = &H10  
  20. Const FILE_ATTRIBUTE_HIDDEN = &H2  
  21. Const FILE_ATTRIBUTE_NORMAL = &H80  
  22. Const FILE_ATTRIBUTE_READONLY = &H1  
  23. Const FILE_ATTRIBUTE_SYSTEM = &H4  
  24. Const FILE_ATTRIBUTE_TEMPORARY = &H100  
  25. Const BIF_RETURNONLYFSDIRS = 1 
  26. Private Type FILETIME  
  27. dwLowDateTime As Long  
  28. dwHighDateTime As Long  
  29. End Type  
  30. '定義類(用于查找文件)  
  31. Private Type WIN32_FIND_DATA  
  32. dwFileAttributes As Long  
  33. ftCreationTime As FILETIME  
  34. ftLastAccessTime As FILETIME  
  35. ftLastWriteTime As FILETIME  
  36. nFileSizeHigh As Long  
  37. nFileSizeLow As Long  
  38. dwReserved0 As Long  
  39. dwReserved1 As Long  
  40. cFileName As String * MAX_PATH  
  41. cAlternate As String * 14  
  42. End Type  
  43. '定義類(用于瀏覽文件夾窗口)  
  44. Private Type BrowseInfo  
  45. hWndOwner As Long  
  46. pIDLRoot As Long  
  47. pszDisplayName As Long  
  48. lpszTitle As Long  
  49. ulFlags As Long  
  50. lpfnCallback As Long  
  51. lParam As Long  
  52. iImage As Long  
  53. End Type  
  54. '自定義函數(shù)  
  55. Function StripNulls(OriginalStr As String) As String  
  56. If (InStr(OriginalStr, Chr(0)) > 0) Then  
  57. OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)  
  58. End If  
  59. StripNulls = OriginalStr 
  60. End Function  
  61. '自定義函數(shù)  
  62. Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, _  
  63. DirCount As Integer)  
  64. Dim FileName As String ' 文件名  
  65. Dim DirName As String ' 子目錄名  
  66. Dim dirNames() As String ' 目錄數(shù)組  
  67. Dim nDir As Integer ' 當(dāng)前路徑的目錄數(shù)  
  68. Dim i As Integer ' 循環(huán)計(jì)數(shù)器變量  
  69. Dim hSearch As Long ' 搜索句柄變量  
  70. Dim WFD As WIN32_FIND_DATA  
  71. Dim Cont As Integer  
  72. If Right(path, 1) <> "\" Then pathpath = path & "\"  
  73. '搜索子目錄  
  74. nDir = 0 
  75. ReDim dirNames(nDir)  
  76. Cont = True 
  77. hSearch = FindFirstFile(path & "*", WFD)  
  78. If hSearch <> INVALID_HANDLE_VALUE Then  
  79. Do While Cont  
  80. DirName = StripNulls(WFD.cFileName)  
  81. If (DirName <> ".") And (DirName <> "..") Then  
  82. If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then  
  83. dirNames(nDir) = DirName  
  84. DirCountDirCount = DirCount + 1  
  85. nDirnDir = nDir + 1  
  86. ReDim Preserve dirNames(nDir)  
  87. End If  
  88. End If  
  89. Cont = FindNextFile(hSearch, WFD) '獲取下一個(gè)子目錄  
  90. Loop  
  91. Cont = FindClose(hSearch)  
  92. End If  
  93. ' 遍歷目錄并累計(jì)文件總數(shù)  
  94. hSearch = FindFirstFile(path & SearchStr, WFD)  
  95. Cont = True 
  96. If hSearch <> INVALID_HANDLE_VALUE Then  
  97. While Cont  
  98. FileName = StripNulls(WFD.cFileName)  
  99. If (FileName <> ".") And (FileName <> "..") Then  
  100. FindFilesAPIFindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow  
  101. FileCountFileCount = FileCount + 1  
  102. List1.AddItem path & FileName  
  103. End If  
  104. Cont = FindNextFile(hSearch, WFD) ' 獲取下一個(gè)文件  
  105. Wend  
  106. Cont = FindClose(hSearch)  
  107. End If  
  108. '如果子目錄存在則遍歷之  
  109. If nDir > 0 Then  
  110. For i = 0 To nDir - 1  
  111. FindFilesAPIFindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", _  
  112. SearchStr, FileCount, DirCount)  
  113. Next i  
  114. End If  
  115. End Function  
  116. '查找按鈕代碼  
  117. Sub Command1_Click()  
  118. Dim SearchPath As String, FindStr As String  
  119. Dim FileSize As Long  
  120. Dim NumFiles As Integer, NumDirs As Integer  
  121. Dim iNull As Integer, lpIDList As Long, lResult As Long  
  122. Dim sPath As String, udtBI As BrowseInfo  
  123. With udtBI  
  124. '設(shè)置瀏覽窗口  
  125. .hWndOwner = Me.hWnd  
  126. '返回選中的目錄  
  127. .ulFlags = BIF_RETURNONLYFSDIRS 
  128. End With  
  129. '調(diào)出瀏覽窗口  
  130. lpIDList = SHBrowseForFolder(udtBI)  
  131. If lpIDList Then  
  132. sPath = String$(MAX_PATH, 0)  
  133. '獲取路徑  
  134. SHGetPathFromIDList lpIDList, sPath  
  135. '釋放內(nèi)存  
  136. CoTaskMemFree lpIDList  
  137. iNull = InStr(sPath, vbNullChar)  
  138. If iNull Then  
  139. sPath = Left$(sPath, iNull - 1)  
  140. End If  
  141. End If  
  142. Screen.MousePointer = vbHourglass 
  143. List1.Clear  
  144. SearchPath = sPath '選中的目錄為搜索的起始路徑  
  145. FindStr = "*.*" '搜索所有類型的文件(此處可另作定義)  
  146. FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)  
  147. Text1.Text = "查找到的文件數(shù):" & NumFiles & vbCrLf & "查找的目錄數(shù):" & _  
  148. NumDirs + 1 & vbCrLf & "文件大小總共為:" & vbCrLf & _  
  149. Format(FileSize, "#,###,###,##0") & "字節(jié)"  
  150. Screen.MousePointer = vbDefault 
  151. End Sub   
  152. '調(diào)出瀏覽窗口  
  153. lpIDList = SHBrowseForFolder(udtBI)  
  154. If lpIDList Then  
  155. sPath = String$(MAX_PATH, 0)  
  156. '獲取路徑  
  157. SHGetPathFromIDList lpIDList, sPath  
  158. '釋放內(nèi)存  
  159. CoTaskMemFree lpIDList  
  160. iNull = InStr(sPath, vbNullChar)  
  161. If iNull Then  
  162. sPath = Left$(sPath, iNull - 1)  
  163. End If  
  164. End If  
  165. Screen.MousePointer = vbHourglass 
  166. List1.Clear  
  167. SearchPath = sPath '選中的目錄為搜索的起始路徑  
  168. FindStr = "*.*" '搜索所有類型的文件(此處可另作定義)  
  169. FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)  
  170. Text1.Text = "查找到的文件數(shù):" & NumFiles & vbCrLf & "查找的目錄數(shù):" & _  
  171. NumDirs + 1 & vbCrLf & "文件大小總共為:" & vbCrLf & _  
  172. Format(FileSize, "#,###,###,##0") & "字節(jié)"  
  173. Screen.MousePointer = vbDefault 
  174. End Sub    

以上就是VB.NET API函數(shù)的實(shí)例,希望對(duì)大家有幫助。

【編輯推薦】

  1. 強(qiáng)化VB.NET Word文檔創(chuàng)建Document對(duì)象
  2. VB.NET Word對(duì)象模型兩大要點(diǎn)介紹
  3. 全方位VB.NET文件操作和分類講述
  4. 細(xì)談VB.NET路徑選擇對(duì)話框?qū)崿F(xiàn)(API)實(shí)例
  5. 強(qiáng)化VB.NET編程多線程句柄技巧
責(zé)任編輯:田樹 來源: 重慶IT商網(wǎng)
相關(guān)推薦

2009-10-28 15:01:59

VB.NET SHEL

2009-10-26 10:44:27

VB.NET API函

2009-11-04 11:32:20

VB.NET回調(diào)函數(shù)

2009-11-03 12:52:38

VB.NET Wind

2009-10-15 17:50:48

VB.NET調(diào)用API

2009-10-23 10:01:28

VB.NET申明Win

2009-11-03 09:37:33

VB.NET重載

2009-11-02 10:30:37

VB.NET EXCE

2009-10-15 17:50:48

VB.NET Spli

2009-11-03 13:02:28

VB.NET Wind

2009-10-28 14:13:32

VB.NET File

2009-10-28 14:34:44

VB.NET Tree

2009-10-21 10:45:50

VB.NET Quic

2010-01-19 18:24:29

VB.NET調(diào)用Win

2010-01-18 18:20:49

VB.NET使用API

2009-11-10 15:52:20

VB.NET變量名

2009-11-02 11:02:58

VB.NET XML文

2009-10-29 16:29:02

VB.NET文件系統(tǒng)對(duì)

2010-01-07 16:46:28

VB.NET延時(shí)函數(shù)

2009-10-20 14:05:42

VB.NET路徑
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

婷婷色综合网| 麻豆精品一区二区综合av| 91麻豆精品| 免费在线你懂的| 国产美女视频黄a视频免费| 日本人妻伦在线中文字幕| 国产精品美女午夜av| 久久精彩免费视频| 日韩欧美国产1| 欧美日韩国产中文字幕| 欧美国产丝袜视频| 粉嫩蜜臀av国产精品网站| 免费在线成人| 欧美大片专区| 欧美先锋资源| 精品精品精品| 国产精品视频一区视频二区| 伊人久久国产| 三级福利片在线观看| 二区在线观看| ga∨成人网| 福利在线免费| 9久久婷婷国产综合精品性色| 久久福利一区二区| 日韩福利在线| 精品日韩欧美| 91精品网站| 国产免费一区二区三区在线能观看| 欧美激情亚洲自拍| 另类图片亚洲另类| 中文字幕亚洲综合| 亚洲欧美日韩图片| 亚洲精选中文字幕| 亚洲精品第一国产综合精品| 欧美xxx久久| 日韩欧美国产三级| 欧美精品一二三| 一本一道综合狠狠老| 午夜免费久久看| 一级做a爱片久久| 亚洲激情av在线| 亚洲人成在线观看一区二区| 日韩码欧中文字| 国产精品国产三级国产普通话三级| 国产三级精品在线| 国产亲近乱来精品视频| 国产日产亚洲精品系列| 国产免费久久精品| 中文无字幕一区二区三区| 日本一区二区免费在线观看视频| 久久婷婷成人综合色| 久久一二三国产| 国产午夜精品福利| 国产精品毛片大码女人| 国产精品网曝门| 亚洲日本一区二区| 国产精品女主播av| 一区二区三区中文字幕| 亚洲一区二区偷拍精品| 亚洲va欧美va人人爽午夜| 精品国产乱码久久久久久婷婷 | 亚洲综合日韩| 视频一区中文字幕| 精品无码三级在线观看视频| 国产精品一区二区91| 99精品视频一区| 国产精品乱子久久久久| 亚洲一区二区综合| 色94色欧美sute亚洲线路二| 欧美人动与zoxxxx乱| 精品sm在线观看| 伊人青青综合网站| 久久久国产精品免费| 欧美激情喷水视频| 国产精品第七十二页| 999国内精品视频在线| 欧美一区二区三区精美影视 | 久久久久久久久久久电影| 国产日韩精品一区| 一区二区三区国产豹纹内裤在线 | 99这里只有精品| 欧美韩日一区二区三区四区| 亚洲精品欧美专区| 在线视频欧美精品| 精品久久五月天| 色婷婷久久一区二区| 国语自产在线不卡| 91亚洲国产成人久久精品网站| 国语精品免费视频| 国产欧美日韩综合一区在线观看| 久久精品女人天堂| 精品国产一区二区三区麻豆小说 | 国产精品久久9| 国产欧美婷婷中文| 精品久久久久久中文字幕动漫| 亚洲一区二区三区四区中文| 116极品美女午夜一级| 香港经典三级在线| 菠萝蜜视频国产在线播放| 视频一区在线免费看| 少妇精品导航| 国产乱码精品| 91视频在线看| 狠狠躁夜夜躁久久躁别揉| 亚洲福利在线观看| 久久久久久久久91| 国产综合色一区二区三区| 人妻激情另类乱人伦人妻| 成年人视频网站| 麻豆系列在线观看| 精品网站999| 狠狠综合久久av一区二区老牛| 国产成人小视频| 亚洲国产精品久久久男人的天堂| 日韩欧美一区二区不卡| 日本免费在线视频不卡一不卡二| 99999精品视频| 新67194成人永久网站| 亚洲一区二区三区免费| 亚洲激情77| 激情文学一区| 成人av先锋影音| 性久久久久久久久| 亚洲福利在线播放| 欧美一级免费视频| 欧美日本韩国一区二区三区| chinese少妇国语对白| 国产一区二区三区不卡在线| av成人在线看| 一区二区三区四区电影| 国产精品一区二区三区四区| 亚洲国产视频直播| 亚洲人在线观看| 影音先锋欧美精品| 国产在线视频不卡二| 男女午夜激情视频| 久草免费福利在线| 亚洲一区在线日韩在线深爱| 午夜影院一区| 欧美限制电影| 激情成人午夜视频| 亚洲一区二区三区中文字幕| 亚洲国产精品久久久久| 日本久久亚洲电影| 国产凹凸在线观看一区二区| 亚洲一区二区在线免费观看视频| 精品一区二区亚洲| 91亚洲一区精品| 欧美日韩在线中文| 欧美激情办公室videoshd| 国产精伦一区二区三区| 欧美aaa在线| 天天操天天综合网| 成人444kkkk在线观看| 精品视频一区在线| 调教视频vk| 午夜激情电影在线播放| 999国产精品视频| 91丨porny丨国产入口| 91久久久免费一区二区| 欧美成人一二三| 日产精品久久久一区二区| 超碰在线公开超碰在线| 国产精品第一国产精品| 一级欧洲+日本+国产| 久久免费国产精品| 精品国产青草久久久久福利| 国产精品久久一区| 美脚丝袜脚交一区二区| 免费在线观看黄色网| 国产欧美亚洲精品a| 不卡av免费在线观看| 日韩欧美一区二区不卡| 91在线精品播放| 四虎国产成人永久精品免费| av在线不卡精品| 日韩国产精品91| 色综合一区二区三区| 久久久影视精品| 免费人成在线观看视频播放| 国产调教视频在线观看| av一区二区在线观看| 国产欧美日韩久久| 国产一区二区免费| 日本在线播放一区| 久草福利在线视频| 国产欧美日韩精品一区二区免费 | 高清免费成人av| 91精品国产综合久久蜜臀| 国产精品美女www爽爽爽视频| 国产a级片免费观看| 久久91导航| 久久精品久久久精品美女| 制服丝袜亚洲播放| 亚洲一区二区三区久久| 九色视频网站| 日本亚洲不卡| 中文av一区特黄| 久久99亚洲精品| 激情综合在线观看|