include("../include.php"); writeHeader("Browse for folder", "Programming » Visual Basic 6 » Visual Basic 6 Code » Common Dialogs » ");?>
Option Explicit Public 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 'BROWSEINFO.ulFlags values: Public Const BIF_RETURNONLYFSDIRS = &H1 Public Const BIF_DONTGOBELOWDOMAIN = &H2 Public Const BIF_STATUSTEXT = &H4 Public Const BIF_RETURNFSANCESTORS = &H8 Public Const BIF_BROWSEFORCOMPUTER = &H1000 Public Const BIF_BROWSEFORPRINTER = &H2000 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 Long Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal PV As Long) 'hWndModal is the hWnd of the form Public Function GetFolder(ByVal hWndModal As Long) As String Dim bInf As BROWSEINFO Dim RetVal As Long Dim PathID As Long Dim RetPath As String Dim Offset As Integer 'Set the properties of the folder dialog bInf.hOwner = hWndModal bInf.lpszTitle = "Please select a folder:" bInf.ulFlags = BIF_RETURNONLYFSDIRS 'Show the Browse For Folder dialog PathID = SHBrowseForFolder(bInf) RetPath = Space$(512) RetVal = SHGetPathFromIDList(ByVal PathID, ByVal RetPath) If RetVal Then 'Trim off the null chars ending the path 'and display the returned folder Offset = InStr(RetPath, Chr$(0)) GetFolder = Left$(RetPath, Offset - 1) 'Free memory allocated for PIDL CoTaskMemFree PathID Else GetFolder = "" End If End Function