德云社于谦有股份吗:VB中通用对话框小问题?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 08:56:37
请问怎么才能获取路径?比如解压缩时要把文件解到具体的地方要用上面的"浏览"项,怎么能想"浏览"那样获取路径?
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pIdl As Long, ByVal pszPath As String) As Long

Private Type BrowseInfo
hwndOwner As Long
piDLroot As Long
pszdisplayName As String
lpsztitle As String
ulFlags As Long
lpfncallback As Long
lParam As Long
iImage As Long
End Type

Private Sub Command1_Click()
Dim bi As BrowseInfo
Dim folderid As Long
Dim pb As String
With bi
.hwndOwner = Me.hWnd
.lpsztitle = "把输出的文件存放到这个文件夹:"
.ulFlags = 3
End With
folderid = SHBrowseForFolder(bi)
If folderid = 0 Then Exit Sub
pb = String$(260, 0)
SHGetPathFromIDList folderid, pb
pb = Left$(pb, InStr(pb, vbNullChar) - 1)
Print pb
End Sub

这个可以,只是看不懂,能不能有简单点的?

如果是VB那个通过对话框控件,要得到路径可以通过将FileName里的FileTitle分离出去得到
Private Sub Command1_Click()
CommonDialog1.ShowSave
MsgBox CommonDialog1.FileName
'这个CommonDialog1.FileName是包含文件名的全路径,CommonDialog1.FileTitle是文件名,二都用字符串运算可以得到路径
End Sub
我认为只要路径的情况,更好的作法是用系统的路径选择对话框
Private Sub Command1_Click()
Dim theApp As Object
Dim Path As Object
Set theApp = CreateObject("Shell.application")
Set Path = theApp.BrowseForFolder(0, "choose", 0, 17)
MsgBox Path.items.Item.Path
End Sub
这样就直接得到路径了