Public Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlage As Long
    lpfn As Long
    lparam As Long
    iImage As Long
End TypePublic Function ShowDir(MehWnd As Long, _
        DirPath As String, _
        Optional Title As String = "请选择文件夹:", _
        Optional flage As Long = &H1, _
        Optional DirID As Long) As Long
    Dim BI As BROWSEINFO
    Dim TempID As Long
    Dim TempStr As String
    
    TempStr = String$(255, Chr$(0))
    With BI
        .hOwner = MehWnd
        .pidlRoot = 0
        .lpszTitle = Title + Chr$(0)
        .ulFlage = flage
        
    End With
    
    TempID = SHBrowseForFolder(BI)
    DirID = TempID
    
    If SHGetPathFromIDList(ByVal TempID, ByVal TempStr) Then
        DirPath = Left$(TempStr, InStr(TempStr, Chr$(0)) - 1)
        ShowDir = -1
        
    Else
        ShowDir = 0
        
    End If
    
End Function

解决方案 »

  1.   

    SHBrowseForFolder
    SHGetPathFromIDList
    这些都是什么函数?我这里没有啊!
      

  2.   

    Form1代码
    ===============================
    Private Sub Command4_Click()
        Dim Pdir As String
        ShowDir hWnd, Pdir
        MsgBox Pdir
    End SubModule1代码
    ==================================Declare Function SHBrowseForFolder Lib "shell32.dll" (ByRef lpbi As BROWSEINFO) As Long
    Declare Function SHGetPathFromIDList Lib "shell32.dll" (ByRef pidl As Any, ByVal pszPath As String) As LongPublic Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlage As Long
        lpfn As Long
        lparam As Long
        iImage As Long
    End TypePublic Function ShowDir(MehWnd As Long, _
            DirPath As String, _
            Optional Title As String = "请选择文件夹:", _
            Optional flage As Long = &H1, _
            Optional DirID As Long) As Long
        Dim BI As BROWSEINFO
        Dim TempID As Long
        Dim TempStr As String
        
        TempStr = String$(255, Chr$(0))
        With BI
            .hOwner = MehWnd
            .pidlRoot = 0
            .lpszTitle = Title + Chr$(0)
            .ulFlage = flage
            
        End With
        
        TempID = SHBrowseForFolder(BI)
        DirID = TempID
        
        If SHGetPathFromIDList(ByVal TempID, ByVal TempStr) Then
            DirPath = Left$(TempStr, InStr(TempStr, Chr$(0)) - 1)
            ShowDir = -1
        Else
            ShowDir = 0
            
        End If
        
    End Function
      

  3.   

    自己做一个对话框,放一个drive 放一个dir 不就行了。
    Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Subdir控件返回的path就是你想要的东西了。
      

  4.   

    to:zyl910 and gaoqi5037(高岐) 
    像你们俩这么写是不是不能加入初始化驱动器路径?
    可是我在前面有一个drive list,该如何处理?