想通过api 获取路径,怎么实现?shell32里的那两个sh打头的函数在shell32里找不到,不能用!怎么办?谢谢各位了!
解决方案 »
- 无边框窗口 如何响应任务栏 系统菜单 上的 关闭(Alt+F4)选择?
- QQ挂机服务器源代码免费公布!!!
- 为什么datagrid控件里的数据,显示一次后,当该变数据源后,并且datagrid也更新了,仍然不变
- SQLserver做视图时遇到的问题
- 谁能告诉我RecordSet.open中的CursorType四个参数的不同点和具体怎样使用??
- 在打开的记录集下如何再进行检索操作
- 字符串处理和EXCEL表格处理!都急死了!有价值讨论给分,解决就结!解决后另开贴加分
- 关于MSHFLEXGRID
- 求InstallShield的中文版或汉化版,版本不限
- 有没有VB中Dll的反编译工具啊,本人高价求购!!!!!!
- excel表间复制问题
- 新手求助,在编写VB查询程序中遇到了一些问题,请能人指点一下,多谢!
Const CSIDL_WINDOWS = &H24Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Private Function GetWindowsDirectory() As String
Dim R As Long, IDL As ITEMIDLIST, sPath As String
R = SHGetSpecialFolderLocation(100, CSIDL_WINDOWS, IDL)
If R = 0 Then sPath = Space(512) R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath) GetWindowsDirectory = Left(sPath, InStr(sPath, Chr(0)) - 1)
Else
GetWindowsDirectory = ""
End If
End Function
Private Type 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 Type
Const BIF_RETURNONLYFSDIRS = &H1
Private pidl As Long
Private Declare Function
SHGetPathFromIDList _
Lib "shell32.dll" Alias
"SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal
pszPath As String) As Long
Private Declare Function
SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpBrowseInfo As BROWSEINFO) As Long
双击命令按钮,写如下代码:Private Sub command1_Click()
Dim bi As BROWSEINFO
Dim r As Long
Dim pidl As Long
Dim path As String
Dim pos As Integer
句柄 bi.hOwner = Me.hWnd 展开根目录 bi.pidlRoot = 0& 列表框标题 bi.lpszTitle = "请选择软件安装路径:" 规定只能选择文件夹,其他无效bi.ulFlags = BIF_RETURNONLYFSDIRS
调用API函数显示列表框pidl = SHBrowseForFolder(bi)
利用API函数获取返回的路径
path = Space$(512)
r = SHGetPathFromIDList(ByVal pidl&, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
Text1 = Left(path, pos - 1)
Else: Text1 = ""
End If
End Sub 运行此程序,单击命令按钮,就可以看到和资源管理器中一样的“所有文件夹”列表了。