我有一个思路用http://www.csdn.net/expert/topic/535/535642.xml?temp=.9031488上Bardo(巴顿)说的方法取得对话框的句柄
找到表路径的ComboBox的句柄
发送“WM_GetText”消息取得表路径的ComboBox的字符串

解决方案 »

  1.   

    Dim BI As BROWSEINFO
      Dim nFolder As Long
      Dim IDL As ITEMIDLIST
      Dim pIdl As Long
      Dim sPath As String
      With BI
        .hOwner = Me.hwnd
        nFolder = CSIDL_NETWORK '网络邻居
        If SHGetSpecialFolderLocation(ByVal Me.hwnd, ByVal nFolder, IDL) = NOERROR Then
          .pidlRoot = IDL.mkid.cb
        End If
         
        .pszDisplayName = String$(MAX_PATH, 0)
        .lpszTitle = "网络文件夹:"
        .ulFlags = 0
        
      End With
      
      ' 显示对话框
      pIdl = SHBrowseForFolder(BI)
      
      If pIdl = 0 Then Exit Sub
        
      sPath = String$(MAX_PATH, 0)
      SHGetPathFromIDList ByVal pIdl, ByVal sPath
      If Trim(sPath) <> " " Then txtPath = Left(sPath, InStr(sPath, vbNullChar) - 1)
      

  2.   

    相关API声明如下
    Option ExplicitPublic gstrPath As String
    Public gblnPathChanged As BooleanPublic Const MAX_PATH = 260Type SHITEMID   ' mkid
        cb As Long       ' Size of the ID (including cb itself)
        abID() As Byte  ' The item ID (variable length)
    End TypeType ITEMIDLIST   ' idl
        mkid As SHITEMID
    End TypeDeclare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
                                  (ByVal pIdl As Long, ByVal pszPath As String) As LongDeclare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
                                  (ByVal hwndOwner As Long, ByVal nFolder As Long, _
                                  pIdl As ITEMIDLIST) As LongPublic Const NOERROR = 0Public Const CSIDL_DESKTOP = &H0
    Public Const CSIDL_PROGRAMS = &H2
    Public Const CSIDL_CONTROLS = &H3Public Const CSIDL_PRINTERS = &H4
    Public Const CSIDL_PERSONAL = &H5   ' (Documents folder)
    Public Const CSIDL_FAVORITES = &H6
    Public Const CSIDL_STARTUP = &H7
    Public Const CSIDL_RECENT = &H8   ' (Recent folder)
    Public Const CSIDL_SENDTO = &H9
    Public Const CSIDL_BITBUCKET = &HA
    Public Const CSIDL_STARTMENU = &HBPublic Const CSIDL_DESKTOPDIRECTORY = &H10
    Public Const CSIDL_DRIVES = &H11Public Const CSIDL_NETWORK = &H12Public Const CSIDL_NETHOOD = &H13Public Const CSIDL_FONTS = &H14Public Const CSIDL_TEMPLATES = &H15   ' (ShellNew folder)
    Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" _
                                  (lpBrowseInfo As BROWSEINFO) As Long ' ITEMIDLISTPublic Type BROWSEINFO   ' bi
        
        hOwner As Long
        
        pidlRoot As Long
        
        pszDisplayName As String
        lpszTitle As String
        
        ulFlags As Long
        
        lpfn As Long
        
        lParam As Long
        
        iImage As LongEnd TypePublic Const BIF_RETURNONLYFSDIRS = &H1Public Const BIF_DONTGOBELOWDOMAIN = &H2Public Const BIF_STATUSTEXT = &H4Public Const BIF_RETURNFSANCESTORS = &H8
    Public Const BIF_BROWSEFORCOMPUTER = &H1000Public Const BIF_BROWSEFORPRINTER = &H2000
      

  3.   

    王文友,我不是调用BrowseDialog,我已经调用了“添加网络映射驱动器”对话框并指定了映射盘附,现在问题是如何获知该盘附????
      

  4.   

    其实我有一个认为简单的办法:
        当映射网络驱动器时,默认的盘符为最大的非cdrom,只要判断一下就可以了,不知道是否可行