高分求助,关于COMMANDDIALOG控件的问题

super2002tian 2004-08-14 03:12:28
各位高手,通常COMMANDDIALOG控件指的是定位到文件。怎么才能将它定位到文件夹啊!!!希望有代码说明。
...全文
146 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2004-08-14
  • 打赏
  • 举报
回复
呵呵,下面的也可以:

Option Explicit
'首先引用 Microsoft Shell Controls And Automation
Private Sub fnShellBrowseForFolderVB()
Dim objShell As Shell
Dim ssfWINDOWS As Long
Dim objFolder As Folder2

Set objShell = New Shell
Set objFolder = objShell.BrowseForFolder(0, "Example", 0, SFVVO_WIN95CLASSIC)
If (Not objFolder Is Nothing) Then
MsgBox objFolder.Self.Path
End If
Set objFolder = Nothing
Set objShell = Nothing
End Sub


Private Sub Command1_Click()
fnShellBrowseForFolderVB
End Sub
落伍者 2004-08-14
  • 打赏
  • 举报
回复
用楼上这个是正解,来晚了,
或者自己用driver,path控件结合写一个吧
online 2004-08-14
  • 打赏
  • 举报
回复
看看这个
Option Explicit

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

熊孩子开学喽 2004-08-14
  • 打赏
  • 举报
回复
文件路径不就是文件夹路径吗?有什么区别吗??
熊孩子开学喽 2004-08-14
  • 打赏
  • 举报
回复
要获得文件的路径:
Function GetPath(FileName as string) as String
Dim Names
Dim I as long
Names = Split(FileName , "\", -1)
For I=Lbound(Names) to UBound(Names)-1
GetLastName =GetLastName & Names(I) & "\"
Next
End Function
使用时,用COMMONDIALOG随便打开一个文件,再写:

Path = GetPath(Commondialog1.FileName)
super2002tian 2004-08-14
  • 打赏
  • 举报
回复
上面老兄你理解错了。我的意思是怎么才能使被选的文件夹被定位,而不是选到文件,选到文件夹就足够了。我所要的是文件夹的路径,而不是文件路径
熊孩子开学喽 2004-08-14
  • 打赏
  • 举报
回复
设置如下:
Commondialog1.InitDir = App.path '初始路径为程序所在路径
Commondialog1.InitDir = "C:\" '初始路径为C:\

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧