乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 51|回复: 2

请教各位大侠 如何打开一个空的文件目录啊?

[复制链接]

15

主题

285

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-12-3 09:24:00 | 显示全部楼层 |阅读模式
请问如何打开一个空的文件目录啊?用CommonDialog 的showopen 属性只能带开含有文件的目录啊
另:如何判断一个文件夹是否为空啊?
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-12-3 12:45:00 | 显示全部楼层
这是一个Window中使用的目录浏览器。
  1. Private Type BrowseInfo
  2.     hWndOwner As Long
  3.     pIDLRoot As Long
  4.     pszDisplayName As Long
  5.     lpszTitle As Long
  6.     ulFlags As Long
  7.     lpfnCallback As Long
  8.     lParam As Long
  9.     iImage As Long
  10. End Type
  11. Const BIF_RETURNONLYFSDIRS = 1
  12. Const MAX_PATH = 260
  13. Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
  14. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
  15. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
  16. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
  17. Private Sub Form_Load()
  18.     'KPD-Team 1998
  19.     'URL: http://www.allapi.net/
  20.     'KPDTeam@Allapi.net
  21.     Dim iNull As Integer, lpIDList As Long, lResult As Long
  22.     Dim sPath As String, udtBI As BrowseInfo
  23.     With udtBI
  24.         'Set the owner window
  25.         .hWndOwner = Me.hWnd
  26.         'lstrcat appends the two strings and returns the memory address
  27.         .lpszTitle = lstrcat("C:", "")
  28.         'Return only if the user selected a directory
  29.         .ulFlags = BIF_RETURNONLYFSDIRS
  30.     End With
  31.     'Show the 'Browse for folder' dialog
  32.     lpIDList = SHBrowseForFolder(udtBI)
  33.     If lpIDList Then
  34.         sPath = String$(MAX_PATH, 0)
  35.         'Get the path from the IDList
  36.         SHGetPathFromIDList lpIDList, sPath
  37.         'free the block of memory
  38.         CoTaskMemFree lpIDList
  39.         iNull = InStr(sPath, vbNullChar)
  40.         If iNull Then
  41.             sPath = Left$(sPath, iNull - 1)
  42.         End If
  43.     End If
  44.     MsgBox sPath
  45. End Sub

关于文件夹和文件的操作,可以在VB或者VBA中引用Microsoft Scripting Runtime类型库,它提供了一些比较简单的方法来操作。
如:
  1. Sub test()
  2.     Dim fso As FileSystemObject
  3.     Set fso = New FileSystemObject
  4.     '判断文件夹是否存在
  5.     Debug.Print fso.FolderExists("c:\test")
  6.     '判断文件是否存在
  7.     Debug.Print fso.FileExists("c:\test")
  8.     '判断文件夹中子文件夹的数目
  9.     Debug.Print fso.GetFolder("c:\test").SubFolders.Count
  10.     '判断文件夹中文件的数目
  11.     Debug.Print fso.GetFolder("c:\test").Files.Count
  12.     Set fso = Nothing
  13. End Sub

其它的用法可以参考VBA帮助。
回复

使用道具 举报

15

主题

285

帖子

9

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2003-12-3 16:21:00 | 显示全部楼层
感谢,非常!!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 14:33 , Processed in 0.868385 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表