Results 1 to 4 of 4

Thread: browse for path (common dialog)

  1. #1

    Thread Starter
    New Member
    Join Date
    Jan 2001
    Posts
    6
    does anybody know how to display a common dialog to browse for a path? no file.

    thanks.

  2. #2
    Junior Member
    Join Date
    Dec 2000
    Posts
    16
    Private Declare Function SHBrowseForFolder Lib "shell32" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long

  3. #3
    Guest
    Here you go:


    Code:
    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 
    
    Private Const BIF_RETURNONLYFSDIRS = 1 
    Private Const MAX_PATH = 260 
    
    Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal _
    hMem As Long) 
    
    Private Declare Function lstrcat Lib "kernel32" _
    Alias "lstrcatA" (ByVal lpString1 As String, ByVal _
    lpString2 As String) As Long 
    
    Private Declare Function SHBrowseForFolder Lib "shell32" _
    (lpbi As BrowseInfo) As Long 
    
    Private Declare Function SHGetPathFromIDList Lib "shell32" _
    (ByVal pidList As Long, ByVal lpBuffer As String) As Long 
    
    
    
    Private Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String
         
        'declare variables to be used
         Dim iNull As Integer
         Dim lpIDList As Long
         Dim lResult As Long
         Dim sPath As String
         Dim udtBI As BrowseInfo
    
        'initialise variables
         With udtBI
            .hwndOwner = hwndOwner
            .lpszTitle = lstrcat(sPrompt, "")
            .ulFlags = BIF_RETURNONLYFSDIRS
         End With
    
        'Call the browse for folder API
         lpIDList = SHBrowseForFolder(udtBI)
         
        'get the resulting string path
         If lpIDList Then
            sPath = String$(MAX_PATH, 0)
            lResult = SHGetPathFromIDList(lpIDList, sPath)
            Call CoTaskMemFree(lpIDList)
            iNull = InStr(sPath, vbNullChar)
            If iNull Then sPath = Left$(sPath, iNull - 1)
         End If
    
        'If cancel was pressed, sPath = ""
         BrowseForFolder = sPath
    
    End Function
    
    
    Usage
    
    
    Private Sub Command1_Click() 
    
        Dim strResFolder As String 
        strResFolder = BrowseForFolder(hWnd, _
        "Please select a folder.") 
        If strResFolder = "" Then 
            Call MsgBox("The Cancel button was pressed.", _
            vbExclamation) 
        Else 
            Call MsgBox("The folder " & strResFolder & _
            " was selected.", vbExclamation) 
        End If 
    
    End Sub

  4. #4

    Thread Starter
    New Member
    Join Date
    Jan 2001
    Posts
    6
    That is BEAUTIFUL man, Thank you.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width