`
qzriso
  • 浏览: 237271 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

在VB中两种方式显示文件夹浏览对话框

    博客分类:
  • vb
阅读更多
在VB中想显示文件夹浏览对话框来选择文件夹好像很不容易,今天在网上搜索了一下,大部分都是VC的代码,比较复杂.有VB的也是调了很多API,让人很受不了.后来在VB引用对象中找来找去,终于找到一个很强大的对象Shell.要用它应先引用Microsoft Shell Controls And Automation对象.测试程序如下(其中文件夹浏览一用的是API,二用的是Shell对象):

Private Const BIF_RETURNONLYFSDIRS = 1                                        '从这里开始为API声明                  
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260

Private Declare Function SHBrowseForFolder Lib "Shell32" _
      (lpbi As BrowseInfo) As Long

Private Declare Function SHGetPathFromIDList Lib "Shell32" _
      (ByVal pidList As Long, _
      ByVal lpBuffer As String) As Long

Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _
      (ByVal lpString1 As String, ByVal _
      lpString2 As String) As Long

Private Type BrowseInfo
     hWndOwner As Long
     pIDLRoot As Long
     pszDisplayName As Long
     lpszTitle As Long
     ulFlags    As Long
     lpfnCallback     As Long
     lParam     As Long
     iImage     As Long
End Type

Dim a As New Shell                                                                                 'Shell对象

Private Sub Command1_Click()                                                              '文件夹浏览一
     Dim lpIDList As Long
     Dim sBuffer As String
     Dim szTitle As String
     Dim tBrowseInfo As BrowseInfo

     szTitle = "This is the title"
     With tBrowseInfo
          .hWndOwner = Me.hWnd
          .lpszTitle = lstrcat(szTitle, "")
          .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
     End With

     lpIDList = SHBrowseForFolder(tBrowseInfo)

     If (lpIDList) Then
          sBuffer = Space(MAX_PATH)
          SHGetPathFromIDList lpIDList, sBuffer
          sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
          MsgBox sBuffer
     End If
    
End Sub

Private Sub Command2_Click()                                                             '文件夹浏览二
Dim b As Folder
Set b = a.BrowseForFolder(0, "选择文件夹", 0)
a.Open b
End Sub

分享到:
评论

相关推荐

    网际畅游 MyIE 3.0 源代码

    不弹出脚本错误提示框:在浏览某些网页时会出现脚本错误,要避免这个问题可以在MyIE选项中选中“不弹出脚本错误对话框”. 本地文件浏览:在工具栏上选择文件按钮,会出现一个类似文件管理器的窗口,其中列出了你...

    VB控件属性使用大全

    (2)在对话框中选择“控件”选项卡,显示ActiveX控件列表; (3)在列表框中找到需要添加的控件名称,单击控件名称左侧的复选框; (4)使用同样的方法选择需要添加的其它控件; (5)单击“确定”按钮,即可将所选...

    VB编程资源大全(源码 其它1)

    prnprv3.zip 在vb5/6中增加打印预览功能(78KB) 662,vbprint.zip vb中使用打印功能的add-in(764KB) 663,spool.zip 打印文件的例子(5KB) 664,versioninfo.zip 从dll或exe文件中获得版本信息(3KB)...

    VB编程资源大全(源码 其它4)

    prnprv3.zip 在vb5/6中增加打印预览功能(78KB) 662,vbprint.zip vb中使用打印功能的add-in(764KB) 663,spool.zip 打印文件的例子(5KB) 664,versioninfo.zip 从dll或exe文件中获得版本信息(3KB)...

    最新计算机应用基础第二章windows题.doc

    该应用程序连同其图标一起被隐藏 (7)在对各种形式的菜单进行选择时,有两种操作方式,一种是用键盘进行选择, 另一种是( )进行选择。 A.用相应命令 B.用会话方式 C.用dos命令 D.使用鼠标 (8)窗口...

    MicrosoftHTMLHelpWorkshopV1.3汉化版.rar

    一般有Windows Help Designer/WinHelp Edition、 helppad、Windows帮助大师helper、RTF2HLP和我们这里所介绍的Microsoft Help Workshop两种。因为有些工具软件使用时最终还是要Microsoft Help Workshop的支持,我们...

    VB编程资源大全(源码 其它3)

    prnprv3.zip 在vb5/6中增加打印预览功能(78KB) 662,vbprint.zip vb中使用打印功能的add-in(764KB) 663,spool.zip 打印文件的例子(5KB) 664,versioninfo.zip 从dll或exe文件中获得版本信息(3KB)...

    VB编程资源大全(源码 其它2)

    prnprv3.zip 在vb5/6中增加打印预览功能(78KB) 662,vbprint.zip vb中使用打印功能的add-in(764KB) 663,spool.zip 打印文件的例子(5KB) 664,versioninfo.zip 从dll或exe文件中获得版本信息(3KB)...

    DirectX修复工具 V3.3增强 绿色版

    程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而...

    Visual C++ 编程资源大全(控件 窗体)

    progress_wnd.zip 弹出式进度条对话框 可以实现两种风格的进度条(6KB)<END><br>91,fold.zip 文件夹浏览对话框 使用相当简单,里面附带英文说明 (4KB)<END><br>92,dlgmenu.zip 带菜单的对话框(26KB)<END><br...

    vc++ 应用源码包_1

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_2

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_6

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_3

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    vc++ 应用源码包_5

    利用Delphi的代码在VC中显示JPG图片,不使用动态连接库。 Mail_Report.zip 一个邮件报告程序。 SrcFirstProg.zip 解释了最基本的MFC程序流程。 tabcontrol_demo.zip tabcontrol_src.zip 自定义的标签控件对话框...

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    DirectX修复工具 V3.3标准 绿色版

    程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而...

    源码统计器1.1版(源码+软件)

    "设置"对话框中用户还可以设置日志文件的路径,这个文件我主要是用来记录统计中可能出现的错误。目前能记录cpp文件中字符串换行但没有用\结尾的问题。 3、 增加了将统计结果保存为Excel文件的功能。 4、 增加了...

    vc++ 开发实例源码包

    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...

    计算机应用技术(实用手册)

    出现上面两种错是CMOS电池没电了.解决方法:打开机箱,把主板上的一节纽扣电池取出,换上一节新的既可,或是CMOS被放电了,从新进入CMOS设置时间保存并退出就可解决此问题。 Press F1 tocontinue ,DEL to enter ...

Global site tag (gtag.js) - Google Analytics