明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1829|回复: 2

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

[复制链接]
发表于 2003-12-3 09:24:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2003-12-3 11:07:17 编辑

请问如何打开一个空的文件目录啊?用CommonDialog 的showopen 属性只能带开含有文件的目录啊
另:如何判断一个文件夹是否为空啊?
发表于 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帮助。
 楼主| 发表于 2003-12-3 16:21:00 | 显示全部楼层
感谢,非常!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 10:39 , Processed in 0.165194 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表