下面为“调出目录选择对话框”的模块
'调出目录选择对话框
'轻风工作室整理
'**********************************************************API函数声明**********************************************
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
'********************************************************************************************************************
'**********************************************************常量声明**********************************************
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const MAX_PATH = 260
'********************************************************************************************************************
'**********************************************************自定义类型**********************************************
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
'********************************************************************************************************************
'**********************************************************自定义函数*********************************************
Public SelectDirectory(thehwnd As Long) As String
Dim iNull As Integer, lpIDList As Long, lResult As Long
Dim sPath As String, udtBI As BrowseInfo
With udtBI
.hWndOwner = thehwnd
.lpszTitle = lstrcat("请选择文件夹", "") '标题
.ulFlags = BIF_RETURNONLYFSDIRS
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
SHGetPathFromIDList lpIDList, sPath
CoTaskMemFree lpIDList
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If
SelectDirectory = sPath
End
'******************************************************************************************************************