⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfindfile.bas

📁 1.如果在向导设置班级数为8时,此数值为班级总数
💻 BAS
字号:
Attribute VB_Name = "mFindFile"
Option Explicit
Public Const SHGFI_LARGEICON = &H0
Public Const SHGFI_SMALLICON = &H1
Public Const DRIVE_REMOVABLE = 2
Public Const DRIVE_FIXED = 3
Public Const DRIVE_REMOTE = 4
Public Const DRIVE_CDROM = 5
Public Const DRIVE_RAMDISK = 6
Public Const SHGFI_ICON = &H100
Public Const MAX_PATH = 260
Type filAttribute
    filName As String
    filDir As String
    filSuffix As String
    filLen As String
    filDate As String
End Type
Type TypeIcon
    cbSize As Long
    picType As PictureTypeConstants
    hIcon As Long
End Type
Type CLSID
    id(16) As Byte
End Type
Type SHFILEINFO
    hIcon As Long                      '  out: icon
    iIcon As Long                      '  out: icon index
    dwAttributes As Long               '  out: SFGAO_ flags
    szDisplayName As String * MAX_PATH '  out: display name (or path)
    szTypeName As String * 80          '  out: type name
End Type
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Declare Function OleCreatePictureIndirect Lib "oleaut32.dll" (pDicDesc As TypeIcon, riid As CLSID, ByVal fown As Long, lpUnk As Object) As Long
Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
'========================================================
Function GetFileAttrib(ByVal strFile$) As filAttribute
    Dim strFileName_WithOutDir$
    strFileName_WithOutDir = GetFileFullName$(strFile$)
    GetFileAttrib.filName = strFileName_WithOutDir
    GetFileAttrib.filDir = Left(strFile$, Len(strFile) - Len(strFileName_WithOutDir))
    GetFileAttrib.filSuffix = GetFileSuffix(strFileName_WithOutDir)
    GetFileAttrib.filLen = GetFileLen(strFile$)
    GetFileAttrib.filDate = FileDateTime(strFile$)
End Function
'========================================================
'========================================================
' 获取文件的文件名及后缀名,不包含路径
Function GetFileFullName$(ByVal strFileName$)
    Dim nPos&, nTmpStr$
    nTmpStr$ = strFileName$
    Do
        nPos& = InStr(1, nTmpStr$, "\")
        If nPos& = 0 Then Exit Do   '未找到 \ 符号,则取消搜索
        nTmpStr$ = Right(nTmpStr$, Len(nTmpStr) - nPos&)
    Loop
    GetFileFullName$ = nTmpStr$
End Function
'========================================================
'========================================================
' 获取文件的文件名,不包含路径及后缀名
Function GetFileName$(ByVal strFileName_WithOutDir$)
    Dim nPos&, nPosPrev&, nTmpStr$
    nTmpStr$ = strFileName_WithOutDir$
    On Error Resume Next
    nPos& = 0
    Do
        nPos& = InStr(nPos& + 1, nTmpStr$, ".")
        If nPos& = 0 Then Exit Do
        nPosPrev& = nPos&
    Loop
    If nPosPrev& = 0 Then
        GetFileName = strFileName_WithOutDir$
    Else
        GetFileName$ = Left(strFileName_WithOutDir$, nPosPrev& - 1)
    End If
End Function
'========================================================
'========================================================
' 获取文件的后缀名
Function GetFileSuffix$(ByVal strFileName_WithOutDir$)
    Dim nPos&, nPosPrev&, nTmpStr$
    nTmpStr$ = strFileName_WithOutDir$
    On Error Resume Next
    nPos& = 0
    Do
        nPos& = InStr(nPos& + 1, nTmpStr$, ".")
        If nPos& = 0 Then Exit Do
        nPosPrev& = nPos&
    Loop
    GetFileSuffix$ = UCase(Right(strFileName_WithOutDir, _
            Len(strFileName_WithOutDir) - nPosPrev&))
End Function
'========================================================
'========================================================
' 获取文件的大小
Function GetFileLen$(ByVal strFileName$)
    Dim nLen As Double
    nLen = FileLen(strFileName$)
    If nLen < 1024 Then
        GetFileLen$ = CStr(nLen) & "字节"
    Else
        GetFileLen$ = Format((nLen / 1024), "Fixed") & "KB"
    End If
End Function
'========================================================
'========================================================
' 查找单一目录下的文件,将其查找到的文件的全路径及
' 名称添加到 ByRef colFiles 集合中。
Function FindFilesInSingleDir&(ByVal strDir$, _
            ByVal strPattern$, _
            ByRef colFiles As Collection)
    Dim cFind As New cFindFile
    Dim strFile$
    If Right(strDir, 1) <> "\" Then _
            strDir = strDir & "\"
    strFile = cFind.Find(strDir & strPattern)
    Do While Len(strFile)
        If (cFind.FileAttributes And vbDirectory) = 0 Then
            ' 将含有目录的文件名添加到集合中
            colFiles.Add strDir & strFile
        End If
        strFile = cFind.FindNext
    Loop
    FindFilesInSingleDir& = colFiles.Count
    Set cFind = Nothing
End Function
'========================================================
'========================================================
' 查找包含子目录下的文件,将其查找到的文件的全路径及
' 名称添加到 ByRef colFiles 集合中。
Function FindAllFiles&(ByVal strSearchPath$, _
            strPattern As String, _
            Optional colFiles As Collection, _
            Optional colDirs As Collection, _
            Optional blnDirsOnly As Boolean, _
            Optional blnBoth As Boolean)
    Dim cFind As New cFindFile
    Dim strFile$
    Dim intDirsFound%
    If Right(strSearchPath, 1) <> "\" Then _
            strSearchPath = strSearchPath & "\"
    strFile = cFind.Find(strSearchPath & strPattern)
    Do While Len(strFile)
        If cFind.FileAttributes And vbDirectory Then
            If Left(strFile, 1) <> "." Then
                If blnDirsOnly Or blnBoth Then
                    colDirs.Add strSearchPath & strFile & "\"
                End If
                intDirsFound = intDirsFound + 1
                intDirsFound = intDirsFound + FindAllFiles( _
                        strSearchPath & strFile & "\", strPattern, _
                        colFiles, colDirs, blnDirsOnly)
            End If
            strFile = cFind.FindNext()
        Else
            If Not blnDirsOnly Or blnBoth Then
                ' 将含有目录的文件名添加到集合中
                colFiles.Add strSearchPath & strFile
            End If
            strFile = cFind.FindNext()
        End If
    Loop
    FindAllFiles = intDirsFound
    Set cFind = Nothing
End Function
'========================================================
'========================================================
' Convert an icon handle into an IPictureDisp.
Public Function IconToPicture(hIcon As Long) As IPictureDisp
    Dim cls_id As CLSID
    Dim hRes As Long
    Dim new_icon As TypeIcon
    Dim lpUnk As IUnknown
    With new_icon
        .cbSize = Len(new_icon)
        .picType = vbPicTypeIcon
        .hIcon = hIcon
    End With
    With cls_id
        .id(8) = &HC0
        .id(15) = &H46
    End With
    hRes = OleCreatePictureIndirect(new_icon, _
            cls_id, 1, lpUnk)
    If hRes = 0 Then Set IconToPicture = lpUnk
End Function
'========================================================
'========================================================
' 从文件中获取其图标
Public Function GetIcon(filename As String, icon_size As Long) As IPictureDisp
    Dim index As Integer
    Dim hIcon As Long
    Dim item_num As Long
    Dim icon_pic As IPictureDisp
    Dim sh_info As SHFILEINFO
    SHGetFileInfo filename, 0, sh_info, _
            Len(sh_info), SHGFI_ICON + icon_size
    hIcon = sh_info.hIcon
    Set icon_pic = IconToPicture(hIcon)
    Set GetIcon = icon_pic
End Function
'========================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -