急,急。。

解决方案 »

  1.   

    IE的收藏夹实际上是一个目录比如我的在:
    D:\Documents and Settings\sonic\Favorites\
    直接吧他们列出来就行了,列目录你总会吧
      

  2.   

    用这个类模块可以实现列出相应的文件夹
    Option Explicit
    Private Type SHITEMID
        cb As Long
        abID As Byte
    End Type
     
    Private Type ITEMIDLIST
        mkid As SHITEMID
    End Type
    Dim SFolder As String
    Dim Selectoptin As String
     
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
    Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As LongPrivate Const NOERROR = 0
    Private Const CSIDL_DESKTOP = &H0
    Private Const CSIDL_PROGRAMS = &H2
    Private Const CSIDL_CONTROLS = &H3
    Private Const CSIDL_PRINTERS = &H4
    Private Const CSIDL_PERSONAL = &H5
    Private Const CSIDL_FAVORITES = &H6
    Private Const CSIDL_STARTUP = &H7
    Private Const CSIDL_RECENT = &H8
    Private Const CSIDL_SENDTO = &H9
    Private Const CSIDL_BITBUCKET = &HA
    Private Const CSIDL_STARTMENU = &HB
    Private Const CSIDL_DESKTOPDIRECTORY = &H10
    Private Const CSIDL_DRIVES = &H11
    Private Const CSIDL_NETWORK = &H12
    Private Const CSIDL_NETHOOD = &H13
    Private Const CSIDL_FONTS = &H14
    Private Const CSIDL_TEMPLATES = &H15
     
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long 'ITEMIDLIST
     
    Private 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
     
    Private Const BIF_RETURNONLYFSDIRS = &H1
    Private Const BIF_DONTGOBELOWDOMAIN = &H2
    Private Const BIF_STATUSTEXT = &H4
    Private Const BIF_RETURNFSANCESTORS = &H8
    Private Const BIF_BROWSEFORCOMPUTER = &H1000
    Private Const BIF_BROWSEFORPRINTER = &H2000Public Enum SpecialFloder
        Enum文件夹 = 0
        Enum桌面文件夹 = 1
        Enum程序文件夹 = 2
        Enum我的文档 = 5
        Enum最喜欢的文件夹 = 6
        Enum开始文件夹 = 11
        Enum我的电脑 = 13
        Enum网上邻居 = 14
    End Enum'保持属性值的局部变量
    Private mvar桌面 As String '局部复制
    Private mvar开始菜单程序 As String '局部复制
    Private mvar我的文档 As String '局部复制
    Private mvar我的最爱 As String '局部复制
    Private mvar启动 As String '局部复制
    Private mvar最近文件夹 As String '局部复制
    Private mvar发送文件夹 As String '局部复制
    Private mvar开始菜单 As String '局部复制
    Private mvar桌面2 As String '局部复制
    Private mvar网上邻居 As String '局部复制
    Private mvar字体 As String '局部复制
    Private mvar用户临时文件夹 As String '局部复制
    Private mvarSelectedFloder As String '局部复制
    '保持属性值的局部变量
    Private mvarFormHwnd As Long '局部复制
    '保持属性值的局部变量
    Private mvarShowSpciFloderIdx As SpecialFloder '局部复制
    Public Property Let ShowSpciFloderIdx(ByVal vData As SpecialFloder)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.ShowSpciFloderIdx = 5
        mvarShowSpciFloderIdx = vData
    End Property
    Public Property Get ShowSpciFloderIdx() As SpecialFloder
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.ShowSpciFloderIdx
        Set ShowSpciFloderIdx = mvarShowSpciFloderIdx
    End PropertyPublic Property Let FormHwnd(ByVal vData As Long)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.FormHwnd = 5
        mvarFormHwnd = vData
    End Property
    Public Property Get FormHwnd() As Long
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.FormHwnd
        Set FormHwnd = mvarFormHwnd
    End PropertyPublic Property Let SelectedFloder(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.SelectedFloder = 5
        mvarSelectedFloder = vData
    End Property
    Public Property Get SelectedFloder() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.SelectedFloder
        SelectedFloder = mvarSelectedFloder
    End PropertyPublic Function ShowFloder() As Long
    Select Case mvarShowSpciFloderIdx
        Case 0
            SFolder = 0
        Case 1
            SFolder = 0
        Case 2
            SFolder = 2
        Case 5
            SFolder = 5
        Case 6
            SFolder = 6
        Case 11
            SFolder = 11
        Case 13
            SFolder = 17
        Case 14
            SFolder = 18
        
    End Select
    Selectoptin = mvarShowSpciFloderIdx
    mvarSelectedFloder = ShowDlg(mvarShowSpciFloderIdx)
    End FunctionPublic Property Let 用户临时文件夹(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.用户临时文件夹 = 5
        mvar用户临时文件夹 = vData
    End Property
    Public Property Get 用户临时文件夹() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.用户临时文件夹
        用户临时文件夹 = mvar用户临时文件夹
    End PropertyPublic Property Let 字体(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.字体 = 5
        mvar字体 = vData
    End Property
    Public Property Get 字体() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.字体
        字体 = mvar字体
    End Property
      

  3.   

    Public Property Let 网上邻居(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.网上邻居 = 5
        mvar网上邻居 = vData
    End Property
    Public Property Get 网上邻居() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.网上邻居
        网上邻居 = mvar网上邻居
    End PropertyPublic Property Let 桌面2(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.桌面2 = 5
        mvar桌面2 = vData
    End Property
    Public Property Get 桌面2() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.桌面2
        桌面2 = mvar桌面2
    End PropertyPublic Property Let 开始菜单(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.开始菜单 = 5
        mvar开始菜单 = vData
    End Property
    Public Property Get 开始菜单() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.开始菜单
        开始菜单 = mvar开始菜单
    End PropertyPublic Property Let 发送文件夹(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.发送文件夹 = 5
        mvar发送文件夹 = vData
    End Property
    Public Property Get 发送文件夹() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.发送文件夹
        发送文件夹 = mvar发送文件夹
    End PropertyPublic Property Let 最近文件夹(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.最近文件夹 = 5
        mvar最近文件夹 = vData
    End Property
    Public Property Get 最近文件夹() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.最近文件夹
        最近文件夹 = mvar最近文件夹
    End PropertyPublic Property Let 启动(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.启动 = 5
        mvar启动 = vData
    End Property
    Public Property Get 启动() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.启动
        启动 = mvar启动
    End PropertyPublic Property Let 我的最爱(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.我的最爱 = 5
        mvar我的最爱 = vData
    End Property
    Public Property Get 我的最爱() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.我的最爱
        我的最爱 = mvar我的最爱
    End PropertyPublic Property Let 我的文档(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.我的文档 = 5
        mvar我的文档 = vData
    End Property
    Public Property Get 我的文档() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.我的文档
        我的文档 = mvar我的文档
    End PropertyPublic Property Let 开始菜单程序(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.开始菜单程序 = 5
        mvar开始菜单程序 = vData
    End Property
    Public Property Get 开始菜单程序() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.开始菜单程序
        开始菜单程序 = mvar开始菜单程序
    End PropertyPublic Property Let 桌面(ByVal vData As String)
    '向属性指派值时使用,位于赋值语句的左边。
    'Syntax: X.桌面 = 5
        mvar桌面 = vData
    End Property
    Public Property Get 桌面() As String
    '检索属性值时使用,位于赋值语句的右边。
    'Syntax: Debug.Print X.桌面
        桌面 = mvar桌面
    End PropertyPrivate Sub Class_Initialize()
        Dim idx&, item&
        Dim rtn&, path$
        Dim idl As ITEMIDLIST
        On Error Resume Next
        For idx& = 1 To 17
            '初始化各文件夹对应的值
            If idx& = 1 Then
                item& = 0
                '程序文件夹
            ElseIf idx& > 1 And idx& < 12 Then
                item& = idx&
                '桌面文件夹
            ElseIf idx& >= 12 Then
                item& = idx& + 4&
            End If
            '取得文件夹的路径
            rtn& = SHGetSpecialFolderLocation(mvarFormHwnd, item&, idl)
            If rtn& = NOERROR Then
                '显示文件夹的路径
                path$ = Space$(512)
                rtn& = SHGetPathFromIDList(ByVal idl.mkid.cb, ByVal path$)
                If rtn Then
                        Select Case idx&
                                Case 1
                                    mvar桌面 = path$
                                Case 2
                                    mvar开始菜单程序 = path$
                                Case 5
                                    mvar我的文档 = path$
                                Case 6
                                    mvar我的最爱 = path$
                                Case 7
                                    mvar启动 = path$
                                Case 8
                                    mvar最近文件夹 = path$
                                Case 9
                                    mvar发送文件夹 = path$
                                Case 11
                                    mvar开始菜单 = path$
                                Case 12
                                    mvar桌面2 = path$
                                Case 15
                                    mvar网上邻居 = path$
                                Case 16
                                    mvar字体 = path$
                                Case 17
                                    mvar用户临时文件夹 = path$
                            End Select
                    End If
                                    
            
            End If
        Next
        Selectoptin = 0End Sub
    Private Function ShowDlg(SpecialFloderIndex As Long) As String
    Dim TmpStr As String
        Dim selectwin As BROWSEINFO
        Dim idl As ITEMIDLIST
        Dim rtn&, pidl&, path$, pos%
        selectwin.hOwner = mvarFormHwnd
        If Selectoptin Then
            rtn& = SHGetSpecialFolderLocation(ByVal mvarFormHwnd, ByVal SFolder, idl)
            selectwin.pidlRoot = idl.mkid.cb
        End If
        '显示选择的文件夹名称
        '''''''selectwin.lpszTitle = Option1(Selectoptin).Caption
        '设置文件夹类型
        selectwin.ulFlags = BIF_RETURNONLYFSDIRS
        '显示对话框
        pidl& = SHBrowseForFolder(selectwin)
        '显示选取的路径
        path$ = Space$(512)
        rtn& = SHGetPathFromIDList(ByVal pidl&, ByVal path$)
        If rtn& Then
            pos% = InStr(path$, Chr$(0))
            TmpStr = Left(path$, pos - 1)
            ShowDlg = TmpStr
        Else
            ShowDlg = ""
        
        End IfEnd Function
      

  4.   

    to a11s(不得其解) 
    有没有多窗口浏览器的源码,问题解决了多少分都行。
      

  5.   

    怎么叫"多窗口浏览器的源码"
    A 类似Tencent的浏览器
       加一个Tab标签,直接NEW就行了,然后设置ContainerB 类似MSN Explorer 的浏览器
       加载一个窗体数组,直接New,然后再Load
      

  6.   

    to a11s(不得其解)
    哪有那么简单,举个例子,你自己做了浏览器打开 sina时那些小广告如何
    也显示也你的浏览器里。
    我是搞Delphi的,我想应该截获某种消息
    不知道VB能不能