乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      用API函數(shù)遍歷指定驅(qū)動器、目錄文件

       悟靜 2009-07-13
      Option Explicit

      '查找第一個文件的API
      Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
      '查找下一個文件的API
      Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
      '獲取文件屬性的API
      Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
      '關(guān)閉查找文件的API
      Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
      '以下為調(diào)用瀏覽文件夾窗口的API
      Private 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 Long
      Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
      Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

      '常量
      Const MAX_PATH = 260
      Const MAXDWORD = &HFFFF
      Const INVALID_HANDLE_VALUE = -1
      Const FILE_ATTRIBUTE_ARCHIVE = &H20
      Const FILE_ATTRIBUTE_DIRECTORY = &H10
      Const FILE_ATTRIBUTE_HIDDEN = &H2
      Const FILE_ATTRIBUTE_NORMAL = &H80
      Const FILE_ATTRIBUTE_READONLY = &H1
      Const FILE_ATTRIBUTE_SYSTEM = &H4
      Const FILE_ATTRIBUTE_TEMPORARY = &H100
      Const BIF_RETURNONLYFSDIRS = 1
      Private Type FILETIME
      dwLowDateTime As Long
      dwHighDateTime As Long
      End 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 * 14
      End 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 Long
      End Type

      '自定義函數(shù)
      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 = OriginalStr
      End Function

      '自定義函數(shù)
      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 ' 目錄數(shù)組
      Dim nDir As Integer ' 當前路徑的目錄數(shù)
      Dim i As Integer ' 循環(huán)計數(shù)器變量
      Dim hSearch As Long ' 搜索句柄變量
      Dim WFD As WIN32_FIND_DATA
      Dim Cont As Integer
      If 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)
      End If
      ' 遍歷目錄并累計文件總數(shù)
      hSearch = FindFirstFile(path & SearchStr, WFD)
      Cont = True
      If hSearch <> INVALID_HANDLE_VALUE Then
      While Cont
      FileName = StripNulls(WFD.cFileName)
      If (FileName <> ".") And (FileName <> "..") Then
      FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
      FileCount = FileCount + 1
      List1.AddItem path & FileName
      End If
      Cont = FindNextFile(hSearch, WFD) ' 獲取下一個文件
      Wend
      Cont = FindClose(hSearch)
      End If
      '如果子目錄存在則遍歷之
      If nDir > 0 Then
      For i = 0 To nDir - 1
      FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", _
      SearchStr, FileCount, DirCount)
      Next i
      End If
      End Function

      '查找按鈕代碼
      Sub Command1_Click()
      Dim SearchPath As String, FindStr As String
      Dim FileSize As Long
      Dim NumFiles As Integer, NumDirs As Integer
      Dim iNull As Integer, lpIDList As Long, lResult As Long
      Dim sPath As String, udtBI As BrowseInfo
      With udtBI
      '設(shè)置瀏覽窗口
      .hWndOwner = Me.hWnd
      '返回選中的目錄
      .ulFlags = BIF_RETURNONLYFSDIRS
      End With

      '調(diào)出瀏覽窗口
      lpIDList = SHBrowseForFolder(udtBI)
      If lpIDList Then
      sPath = String$(MAX_PATH, 0)
      '獲取路徑
      SHGetPathFromIDList lpIDList, sPath
      '釋放內(nèi)存
      CoTaskMemFree lpIDList
      iNull = InStr(sPath, vbNullChar)
      If iNull Then
      sPath = Left$(sPath, iNull - 1)
      End If
      End If

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約