模块: Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongPublic Const BIF_RETURNONLYFSDIRS = &H1Type BROWSEINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End TypeForm: Function SelFolder(frmhwnd As Long) As String Dim bi As BROWSEINFO Dim r As Long Dim pidl As Long Dim path As String Dim pos As Integer
bi.hOwner = frmhwnd '句柄 bi.pidlRoot = 0& '展开根目录 bi.lpszTitle = "选择文件夹位置:" '列表框标题 bi.ulFlags = BIF_RETURNONLYFSDIRS '规定只能选择文件夹,其他无效 pidl = SHBrowseForFolder(bi) '调用API函数显示列表框 path = Space$(512) '利用API函数获取返回的路径 r = SHGetPathFromIDList(ByVal pidl&, ByVal path) If r Then pos = InStr(path, Chr$(0)) SelFolder = Left(path, pos - 1) '返回选择的目录位置 Else SelFolder = "" End If Exit Function End FunctionPrivate Sub Command1_Click() Dim ss As String ss = SelFolder(Me.hWnd) MsgBox ss End Sub
如果不能满足你的要求,就自己做个选择文件的窗体啊,然后模式显示
http://www.yesky.com/297/202297.shtml
用API函数实现文件夹列表 作者: 出处: yesky 责任编辑: [ 2001-10-26 11:26 ]
在安装软件等一些操作中,需要用户指定安装路径,现在软件的安装界面都是非常友好的,一般来说给出一个缺省路径,用户如不满意可以在文件夹列表中选择其他的路径。在WIN9X下,一般不再采用原来的先在驱动器列表框中选择驱动器再在相应的驱动器中选择相应文件夹的界面,而是采用的类似资源管理器中“所有文件夹”界面:最上层是“桌面”,然后是“我的电脑”、驱动器A、C、D...等,在一个列表框中用户可实现浏览所有驱动器及文件夹的操作。这种特色的文件列表没有现成的控件可供使用,但利用API函数可方便地实现。 ...
自己看吧
Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongPublic Const BIF_RETURNONLYFSDIRS = &H1Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End TypeForm:
Function SelFolder(frmhwnd As Long) As String
Dim bi As BROWSEINFO
Dim r As Long
Dim pidl As Long
Dim path As String
Dim pos As Integer
bi.hOwner = frmhwnd '句柄
bi.pidlRoot = 0& '展开根目录
bi.lpszTitle = "选择文件夹位置:" '列表框标题
bi.ulFlags = BIF_RETURNONLYFSDIRS '规定只能选择文件夹,其他无效
pidl = SHBrowseForFolder(bi) '调用API函数显示列表框
path = Space$(512) '利用API函数获取返回的路径
r = SHGetPathFromIDList(ByVal pidl&, ByVal path) If r Then
pos = InStr(path, Chr$(0))
SelFolder = Left(path, pos - 1) '返回选择的目录位置
Else
SelFolder = ""
End If
Exit Function
End FunctionPrivate Sub Command1_Click()
Dim ss As String
ss = SelFolder(Me.hWnd)
MsgBox ss
End Sub