嘉人
收藏本版 |订阅 | 回收站
搜索
嘉人美妆精英学院 达人馆 潮流速递 vb中显示文件夹浏览对话框
查看: 306|回复: 0
go

vb中显示文件夹浏览对话框 [!copy_link!]

跳转到指定楼层
1#
发表于 2014-10-6 20:28:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    使用vb的Shell对象,用它前应先引用Microsoft Shell Controls And Automation对象。
    Private Sub CmdBrowse_Click()
    Dim a As New Shell 'Shell对象
    Dim b As Folder
    Set b = a.BrowseForFolder(0, "选择文件夹", 0)
    ‘a.Open b打开文件
    msgbox b.Items().Item().Path'显示文件完整路径
    End Sub
    什么是Shell对象?具体来讲,就是微软对一些常用外壳作函数的封装。象打开或浏览一个文件夹、查找文件、关闭计算机等等,而且还能浏览整个文件系统,获取文件或文件夹的各种信息。由于这些封装是建立在OLE自动化服务的基础之上,所以我们就可以在VB中方便的使用它们。
    在VB中使用shell
    VB自身所提供的对象或函数的功能也许比较有限,但能够引用各式各样的类型库和自动化对象就将其功能无限的扩展了!具体做法如下(以中文VB6为例):
    ---- 新建一个工程,在“工程”菜单中选择“引用”,你将看到一个“引用对话框”,然后在“可用的引用”中选择“Microsoft Shell Controls and Automation”,这样你就可以在程序中使用Shell对象了。
    ---- 下面来试一试Shell对象提供的方法。在窗体(Form1)中添加一个按扭(Button1),然后在Button1的Click事件中添加如下代码:
    Dim MyShell As Shell
    Set MyShell = New Shell
    MyShell.FindFiles
    ---- 当MyShell变量成为Shell对象的实例之后,你在编辑的过程中就可以看到Shell对象的所有方法。上面的代码使用的是FindFiles方法,它将显示“查找文件”对话框。下表给出了Shell对象中常用的方法,以供大家参考。
    ---- 方法 描述
    ---- BrowseForFolder 显示浏览文件夹对话框,包括4个参数:
    ---- Hwnd, Title, Optio, [RootFolder]
    ---- Hwnd:包含对话框的窗体句柄(handle),一般设置为0。 Title:将在对话框中显示的说明,为字符串。
    ---- Optio:使用对话框的特殊方式,为长整数,一般设置为0。
    Optio,浏览方式,见下:
    0x0001  For finding a folder to start document searching
    0x0002  For starting the Find Computer
    0x0004  对话框加宽
    0x0008  确定按钮变灰失效
    0x0010  在对话框顶部加入编辑框
    0x0020  iist on valid result (or CANCEL)
    0x1000  确定按钮变灰失效
    0x2000  可选当前文件,不包括子目录文件,确定按钮变灰失效,(可同时选0x0001使确定按钮有效)
    0x4000  浏览所有项,可选文件或文件夹
    [RootFolder]:可选的,用来设置浏览的最顶层文件夹,缺省时为“桌面”,你可以将其设置为一个路径或“特殊文件夹常数”。 RootFolder,起始根目录,可选项,可以自己指定目录字符串,也可以是系统目录的数字表示,数字含义见下:
    0x0000 桌面
    0x0001 IE浏览器
    0x0002 C:\WINDOWS\Start Menu\Programs目录
    0x0003 控制面板
    0x0004 打印机
    0x0005 我的文档
    0x0006 收藏
    0x0007 启动
    0x0008 Recent文档
    0x0009 发送到
    0x000a 回收站
    0x000b 开始菜单
    0x000c 桌面(打开在我的电脑)
    0x0010 C:\WINDOWS\Desktop桌面目录
    0x0011 我的电脑(包括所有驱动器)
    0x0012 整个网络
    0x0013 NetHood
    0x0014 字体目录
    0x0015 C:\WINDOWS\ShellNew目录
    0x001a C:\WINDOWS\Application Data目录
    0x001b  printHood
    0x0020 C:\WINDOWS\Temporary Internet Files目录
    0x0021 cookie目录
    0x0022 IE浏览历史
    ---- ControlPanelItem 运行一个指定的控制面板项目,包括一个参数:
    ---- szDir:控制面板项目名
    ---- Explore 用资源管理器浏览一个指定文件夹,包括一个参数:
    ---- vDir:一个路径或“特殊文件夹常数”
    ---- Open 打开一个指定文件夹,包括一个参数:
    ---- vDir:一个路径或“特殊文件夹常数”
    ---- FileRun 显示“运行”对话框
    ---- FindComputer 显示“查找计算机”对话框
    ---- FindFiles 显示“查找文件”对话框
    ---- CascadeWindows 层叠排列桌面上所有窗口
    ---- TileHorizontally 横向排列桌面上所有窗口
    ---- TileVertically 纵向排列桌面上所有窗口
    ---- MinimizeAll 最小化所有窗口
    ---- UndoMinimizeALL 恢复最小化的窗口
    ---- EjectPC 注销当前用户
    ---- Suspend 将计算机挂起
    ---- ShutdownWindows 显示“关闭Windows”对话框
    ---- NameSpace 用所给的文件夹路径创建一个文件夹对象(Folder对象),使用Folder对象,你可以浏览整个文件系统,获取文件或文件夹的各种信息。
    ---- 表中出现了“特殊文件夹常数”,那什么是特殊文件夹,象“我的电脑”,“控制面板”等等,在系统中是找不到相应目录的,还有“桌面”、“收藏夹”等一些Windows安装后就产生的文件夹,也是特殊文件夹(0x表示16进制)。
    桌面:ssfDESKTOP = 0x0000
    文档:ssfSENDTO = 0x0009
    收藏夹:ssfFAVORITES = 0x0006
    打印机:ssfPRINTERS = 0x0004
    我的电脑:ssfDRIVES = 0x0011
    控制面板:ssfCONTROLS = 0x0003
    网络邻居:ssfNETWORK = 0x0012
    ---- 有了这些提示和参考,再加上你的想象,一定能让VB编出程序增色不少。
    由Shell对象创建的Folder对象
    ---- 在上面的事例和参考中,总有一个Folder对象,那如何使用该对象呢?一个Folder对象包含了一个指定文件夹的所有信息:子目录,其中的文件等等。使用items方法可以返回一个文件夹项目集合(FolderItems集合),这个集合里有指定目录中的所有子目录和文件。
    ---- FolderItems集合有一个count属性,可以通过它得到子目录和文件总数,这样你就能用一个“循环语句”历遍目录下的所有项目。同时你就可以用item方法返回一个FolderItem对象,对一个文件夹或文件进行作,item方法有一个可选长整数参数,用来对集合中的项目索引。有了FolderItem对象,就能得到文件夹和文件的各种信息。FolderItem对象有如下主要属性:
    GetFolder :如果项目是文件夹,就得到一个Folder对象
    IsBrowsable :如果可以浏览就为True,否则为False
    IsFileSystem :如果是系统文件夹或文件就为True,否则为False
    IsFolder :如果是文件夹就为True,否则为False
    ModifyDate :访问或更改的日期
    Name :文件或目录名
    Path :文件或目录的路径
    Size :文件的大小
    Type :文件的类型
    ---- 下面是Folder对象的示例。
    ---- 在VB中使用:在先前的窗体中加入一个新按扭(Button2)和一个列表框(List1),再在Button2的Click事件中加入如下代码:
    Dim MyShell As Shell
    Dim myFolder, myFolde
    Set MyShell = New Shell
    Set myFolder = MyShell.BrowseForFolder
    (Form1.hWnd, "请选择一个文件夹", 0)
    Set myFolde = myFolder.Items()
    List1.Clear
    For i = 0 To myFolde.Count - 1
    List1.AddItem myFolde.Item(i).Name
    Next I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 鲜花鲜花 鸡蛋鸡蛋
‹ 上一主题|下一主题

Archiver|嘉人网

GMT+8, 2025-7-8 00:33 , Processed in 0.025399 second(s), 13 queries .

Powered by Discuz! X3.2

© 2001-2010 Comsenz Inc.