VB6 用API 函数列出指定文件夹中的所有文件

Private Const MAX_PATH = 260
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
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 Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long


Public Function All_Files(Dir As String, List() As String) As Boolean
    If SetCurrentDirectory(Dir) Then
        Dim Yes As Boolean
        Dim hFindFile As Long
        Dim F As WIN32_FIND_DATA, ClearF As WIN32_FIND_DATA
        Dim FileCount As Integer: FileCount = 0
        ReDim List(1 To 1) As String
        If Right(Dir, 1) <> "\" Then Dir = Dir & "\"
        hFindFile = FindFirstFile(Dir & "*.*", F)
        If hFindFile > 0 Then
            Do
                If F.dwFileAttributes <> FILE_ATTRIBUTE_DIRECTORY Then
                    FileCount = FileCount + 1
                    ReDim Preserve List(1 To FileCount) As String
                    List(FileCount) = Dir & F.cFileName
                    All_Files = True
                End If
                F = ClearF
                Yes = FindNextFile(hFindFile, F)
            Loop While Yes
        Else
            All_Files = False
        End If
        FindClose hFindFile
    Else
        All_Files = False
    End If
End Function


Private Sub Command1_Click()
    Dim List() As String
    If All_Files("C:\Files\", List) Then
        For i = 1 To UBound(List)
            Debug.Print List(i)
        Next
    End If
End Sub
4.13.0.130¶ 修改过滤器的默认配置,去掉了 encoding="gb2312" 4.13.0.129¶ 补充翻译了一条漏掉的快捷菜单项"显示搜索对话框(D)" 4.13.0.128¶ 增加了对英文的支持 4.12.0.127¶ 更新了热键控件,重新编译插件 4.11.0.126¶ 为了避免安装路径的差异问题,修改了make.bat,从注册表提取VB6的路径 将热键设定及响应的功能提取到一个单独的HotkeyControl?项目 引用新HotkeyControl?控件,并在本地添加一个代理类HotkeyProxy? 补充了类注释和模块注释 调整了检查版本的方式,增加对以何种方式检查的判断,在手动检查更新时忽略灵敏度设置 4.10.0.125¶ 增加自动升级灵敏度的设定 修改了没有激活工程时进行范围是当前工程的搜索提示错误的问题 4.9.0.124¶ 增加ICondInfo接口,此接口定义了需要使用的搜索条件,全局设定GlobalSetting?和条件快照ConditionSnap?都实现了该接口,此接口在TaskMgr?用到,代替原先的大量Property Get语句 在搜索范围是当前工程的时候显示工程名称 修改了搜索范围是选定区域,且区域包含汉字时会搜索不全的问题 修改了搜索范围是当前过程,过程为最后一行且无后续换行时,搜索不全的问题 4.8.0.123¶ 选正则表达式时,将整词匹配选项替换为单行模式选项 增加对正则表达式单行模式搜索/替换的支持 尝试不关闭窗口的代码高亮方式 选多行时自动将搜索范围切换至选内容 在卸载插件时删除全局对象的引用 完美解决了定位时焦点显示的问题. 修改了VBA插件启动时提示下标越界的问题 更改了工程文件名和DLL文件名,去掉了开头的VB字母 修改了安装文件文件名为VBEnhancedSearch_Setup.exe 代码预览的相关行数默认值修改为12 增加定位时将代码窗体最大化的选项 在搜索结果列表的右键菜单,增加关闭全部页面的选项 修改了代码预览窗体的背景及关键字的颜色 4.7.0.120¶ 修改了点击关闭按钮关闭页面时出错的问题 修改了快速点击搜索按钮提示错误的问题 修改无页面时点击ESC提示错误的问题 修改无页面时未禁用关闭按钮的问题 修改vbalTabControl,在用BarEnabled?设置Enabled属性的时候同时设定CanClose?,防止用户在禁用时点击关闭按钮. 在弹出对话框之前进行菜单的状态更新操作,防止菜单项选状态更新不及时. 为了提高效率,使用ByRef?传递使用频率较高函数的字符串参数 对齐升级提示对话框的版本号 补充了一些注释 去掉了默认标签页 增加关闭其它页面的功能 将TabData?更名为Page 将LogClassInitialize?和LogClassTerminate?函数放入标准模块 增加ILib接口,此接口用于进行全局对象的构建和销毁,并修改所有本地全局对象的初始化机制. 为了提高执行效率,修改了vbalDTab6FES.ocx的源代码,增加可以快速批量设置所有Tab标签的可用属性BarEnabled? 从PageManager?分离出PageCollection?类,此类用于专门管理页面集合 修改了工具栏窗口创建的方式,将此操作合并到CreateObjects?函数 点确定关闭选项窗口时如果过滤器字符串无变化,则不更新列表 修改滚动条重绘的方式为PostMessage? 修改了Tab控件的事件处理,结果窗口仅处理菜单相关事件,页面增减相关事件由PageManager?类处理 修改了分离PageCollection?类后需要调整的相关调用代码 对于Task对象的事件源更新操作都放在TabManager?类的TabChange?事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值