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
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
to a11s(不得其解) 有没有多窗口浏览器的源码,问题解决了多少分都行。
怎么叫"多窗口浏览器的源码" A 类似Tencent的浏览器 加一个Tab标签,直接NEW就行了,然后设置ContainerB 类似MSN Explorer 的浏览器 加载一个窗体数组,直接New,然后再Load
to a11s(不得其解) 哪有那么简单,举个例子,你自己做了浏览器打开 sina时那些小广告如何 也显示也你的浏览器里。 我是搞Delphi的,我想应该截获某种消息 不知道VB能不能
D:\Documents and Settings\sonic\Favorites\
直接吧他们列出来就行了,列目录你总会吧
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
'向属性指派值时使用,位于赋值语句的左边。
'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
有没有多窗口浏览器的源码,问题解决了多少分都行。
A 类似Tencent的浏览器
加一个Tab标签,直接NEW就行了,然后设置ContainerB 类似MSN Explorer 的浏览器
加载一个窗体数组,直接New,然后再Load
哪有那么简单,举个例子,你自己做了浏览器打开 sina时那些小广告如何
也显示也你的浏览器里。
我是搞Delphi的,我想应该截获某种消息
不知道VB能不能