就是弹出路径选择对话框,不是文件选择对话框,因为我要将那个文件架下的文件全读出来,好像是调用API函数,可是我不知道调用那个,谁能给个具体的代码?一定别给commondialog.open那样的啊,我不是那个意思,我只要选择路径的对话框

解决方案 »

  1.   

    SHBrowseForFolder就可以了。下面这个是Applevb上的扩展的SHBrowseForFolder。
    标准模块中
     '******************************************      选择文件夹时的函数     ************************************Private Const BIF_STATUSTEXT = &H4&
    Private Const BIF_RETURNONLYFSDIRS = 1
    Private Const BIF_DONTGOBELOWDOMAIN = 2
    Private Const MAX_PATH = 260
    Private Const WM_USER = &H400
    Private Const BFFM_INITIALIZED = 1
    Private Const BFFM_SELCHANGED = 2
    Private Const BFFM_SETSTATUSTEXT = (WM_USER + 100)
    Private Const BFFM_SETSELECTION = (WM_USER + 102)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 TypePrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam 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 Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
    Private m_CurrentDirectory As String'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Public Function BrowseForFolder(owner As Form, Title As String, StartDir As String) As String
        Dim lpIDList As Long
        Dim szTitle As String
        Dim sBuffer As String
        Dim tBrowseInfo As BrowseInfo
        m_CurrentDirectory = StartDir & vbNullChar
        szTitle = Title
        With tBrowseInfo
            .hwndOwner = owner.hwnd
            .lpszTitle = lstrcat(szTitle, "")
            .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + BIF_STATUSTEXT
            .lpfnCallback = GetAddressofFunction(AddressOf BrowseCallbackProc)  'get address of function.
        End With
        lpIDList = SHBrowseForFolder(tBrowseInfo)
        If (lpIDList) Then
            sBuffer = Space(MAX_PATH)
            SHGetPathFromIDList lpIDList, sBuffer
            sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
            BrowseForFolder = sBuffer
        Else
            BrowseForFolder = ""
        End If
    End Function
     
    Private Function BrowseCallbackProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal lp As Long, ByVal pData As Long) As Long
        Dim lpIDList As Long
        Dim ret As Long
        Dim sBuffer As String
        On Error Resume Next
        Select Case uMsg
        Case BFFM_INITIALIZED
            Call SendMessage(hwnd, BFFM_SETSELECTION, 1, m_CurrentDirectory)
        Case BFFM_SELCHANGED
            sBuffer = Space(MAX_PATH)
            ret = SHGetPathFromIDList(lp, sBuffer)
            If ret = 1 Then
                Call SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, sBuffer)
            End If
        End Select
        BrowseCallbackProc = 0
    End FunctionPrivate Function GetAddressofFunction(add As Long) As Long
        GetAddressofFunction = add
    End Function
    调用
        Dim folderpath As String
        folderpath = BrowseForFolder(Me, "请选择一个文件夹:", "c:\")
        MsgBox folderpath
      

  2.   

    VB.NET 比较好,内置了 Folder Browser Dialog,其实就是楼上说的那个。