豆瓣高分推理日剧:WebBrowser控件使用详解

来源:百度文库 编辑:中财网 时间:2024/05/04 10:35:29
2011-03-25 23:28:42|  分类:vb |  标签: |字号大中小
方法
说明
GoBack相当于IE的“后退”按钮,使你在当前历史列表中后退一项
GoForward相当于IE的“前进”按钮,使你在当前历史列表中前进一项
GoHome相当于IE的“主页”按钮,连接用户默认的主页
GoSearch相当于IE的“搜索”按钮,连接用户默认的搜索页面
Navigate连接到指定的URL
Refresh刷新当前页面
Refresh2同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,
该表定义在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器
REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新
REFRESH_CONTIN 仅作内部使用。在MSDN里写着DO NOT USE! 请勿使用
REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器
Stop相当于IE的“停止”按钮,停止当前页面及其内容的载入
属性
说明
Application如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser
控件的自动化对象
Parent返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口
Container返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同
Document为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则
Document属性提供对DHTML Object Model的访问途径
TopLevelContainer返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回tr
Type返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返
回Microsoft Word Document
Left返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离
Top返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离
Width返回或设置WebBrowser窗口的宽度,以像素为单位
Height返回或设置WebBrowser窗口的高度,以像素为单位
LocationName返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源
是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称
LocationURL返回WebBrowser当前正在显示的资源的URL
Busy返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回tr
就可以使用stop方法来撤销正在执行的访问操作
WebBrowser 的事件 Private Events Description
BeforeNavigate2 导航发生前激发,刷新时不激发
CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward
菜单项或按钮
DocumentComplete 当整个文档完成是激发,刷新页面不激发
DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件
DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件
NavigateComplete2 导航完成后激发,刷新时不激发
NewWindow2 在创建新窗口以前激发
OnFullScreen 当FullScreen属性改变时激发。该事件采用VARIENT_BOOL的一个输
入参数来指示IE是全屏显示方式(VARIENT_TR)还是普通显示方式(VARIENT_FALSE)
OnMen?r 改变Men?r的属性时激发,标示参数是VARIENT_BOOL类型的。
VARIANT_TR是可见,VARIANT_ FALSE是隐藏
OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发
OnStatusBar 与OnMen?r调用方法相同,标示状态栏是否可见。
OnToolBar 调用方法同上,标示工具栏是否可见。
OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数
StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏
TitleChange
Title有效或改变时激发
一些使用技巧
1.禁止右键
看到很多关于WebBrowser控件禁止右键的提问,回复的方法很多,其中有提到使用微软提供的Webbrowser扩展COM服务器对象(WBCustomizer.dll),但是该方法在我们想使用Webbrowser编辑网页(Webbrowser1.Document.execCommand "editMode")的时候有很多弊端,比如不能显示选中的文本等。另有些方法也就不用一一列举了。
这儿我想提到的是关于MSHTML.HTMLDocument
引用Microsoft HTML OBject Library
Rem #窗体代码#
Dim WithEvents M_Dom As MSHTML.HTMLDocument
Private Function M_Dom_oncontextmenu() As Boolean
M_Dom_oncontextmenu = False
End Function
Private S Webbrowser1_DownloadComplete()
Set M_Dom = Webbrowser1.Document
End S
Rem 好了,右键菜单没有了
=========================================================================
2、控件调用和获得收藏夹里面
基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字就是你要的收藏的名字, 路径可以自己根据从上面得到的路径去得到.
如果你不用dir也可以用vb的dir控件.
Private Type SHITEMID
cb As Long
abID As Byte
End Type
P lic Type ITEMIDLIST
mkid As SHITEMID
End Type
P lic Function SpecialFolder(ByRef CSIDL As Long) As String
'locate the favorites folder
Dim R As Long
Dim sPath As String
Dim IDL As ITEMIDLIST
Const NOERROR = 0
Const MAX_LENGTH = 260
R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL)
If R = NOERROR Then
sPath = Space$(MAX_LENGTH)
R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
If R Then
SpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)
End If
End If
End Function
=============================================================
3、全屏
是的,webbrowser本生是一个控件, 你要它全屏,就是要它所在的窗体全屏, 可以用setwindowlong取消窗体的 title, 用Call ShowWindow(FindWindow("Shell_traywnd", ""), 0) 隐藏tray,就是下边那个包含开始那一行. 用Call ShowWindow(FindWindow("Shell_traywnd", ""), 9) 恢复. 够详细了吧.
然后在form1.windowstate = 2 就可以了.
================================================================================
4、选择网页上的内容。
Private S Command1_Click()
'请先选中一些内容
Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT
MsgBox Clipboard.GetText
End S
==========================================================================
5、用IE来下载文件
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
Private S Command1_Click()
Dim sDownload As String
sDownload = StrConv(Text1.Text, vbUnicode)
Call DoFileDownload(sDownload)
End S
Private S Form_Load()
Text1.Text = "http://www.chat.ru/~softdaily/fo-ag162.zip"
Form1.Caption = "A iograbber 1.62 Full"
Text2.Text = "http://www6.50megs.com/a iograbber/demos/cr-ag161.zip"
End S
=======================================================================
6、我要动态加载和删除WebBrowser控件应该怎么做?
Private S Command1_Click()
Form1.Controls.Add "shell.explorer.2", "NewWeb", Form1
With Form1!NewWeb
.Visible = Tr
.Width = 10000
.Height = 10000
.Left = 0
.Top = 0
.Navigate2 "www.csdn.net"
End With
End S
Private S Command2_Click()
Controls.Remove Form1!newweb
End S
Form1.Controls.Add "shell.explorer.2", newweb(newweb.Count), Form1
With Form1!newweb(newweb.Count)
.Visible = Tr
.Width = 1000
.Height = 1000
.Left = newweb(newweb.Count - 1).Left + newweb(newweb.Count - 1).Width
.Top = 0
'.Navigate2 "www.csdn.net"
End With
为什么他说我
Form1.Controls.Add "shell.explorer.2", newweb(newweb.Count), Form1
这一行错误13 类型不匹配?
ps:我在form中已经有了一个newweb(0)控件
先为一个WebBrowser
Dim i As Integer
Private S AddWeb_Click()
For i = 1 To 10
Load NewWeb(i)
NewWeb(i).Top = i * 100
NewWeb(i).Left = i * 100
NewWeb(i).Visible = Tr
Next i
End S
Private S DelWeb_Click()
For i = 1 To 10
Unload NewWeb(i)
Next i
End S
=======================================================
7、一个把页面保存为MHT(即MHTML)文件
将 pcwak(书剑狂生[MS MVP]) 大侠提供的资料贴出来,以供大家参考:
我终于找到一个把页面保存为MHT(即MHTML)文件的方法了!
首先,在工程中必须要引用一个库:
Library CDO
D:\WINNT\System32\cdosys.dll
Microsoft CDO for Windows 2000 Library
其次,需要Stream对应的接口的支持,如果你一时找不到就使用支持这个的较新的ADO就行了,如
Library ADODB
D:\Program Files\Common Files\system\ado\msado15.dll
Microsoft ActiveX Data Objects 2.5 Library
代码如下,十分简单(同时由于流的特点,显示在实际应用中没必要象本例中那样把文件保存到磁盘上就可直接转换为字符串或字节数组什么的处理的。
另,对于Microsoft CDO for Windows 2000 Library这个库,在WIN98中要怎么使用还没试过,感兴趣的朋友可以试试并跟帖,以丰富完善其内容:)
Private S Command1_Click()
' Reference to Microsoft ActiveX Data Objects 2.5 Library
' Reference to Microsoft CDO for Windows 2000 Library
Dim iMsg As New CDO.Message
Dim iConf As New CDO.Configuration
Dim objStream As ADODB.Stream
With iMsg
.CreateMHTMLBody "http://www.tupian888.cn/";, , _
"domain\username", _
"password"
Set objStream = .GetStream
Call objStream.SaveToFile("f:\test.mht", adSaveCreateOverWrite)
End With
End S
2、
'首先加入对ADODB和CDO(Microsoft CDO for Windows 2000 Library,对应文件名为CDOSYS.dll)的引用
Private S Command1_Click()
Dim message As New CDO.message
Dim Outstream As ADODB.Stream
On Error GoTo myerr1
Call message.CreateMHTMLBody("http://www.xiaogame888.cn", CDO.CdoMHTMLFlags.cdoSuppressNone, "", "")
Set Outstream = message.GetStream
Call Outstream.SaveToFile("c:\test.mht", ADODB.SaveOptionsEnum.adSaveCreateOverWrite)
MsgBox "完成"
Exit S
myerr1:
Set message = Nothing
Set Outstream = Nothing
End S
=======================================================
8、在WebBrowser控件调用收藏夹和在收藏夹里添加收藏
Option Explicit
Private S Command1_Click()
Dim ObjSUH As New ShellUIHelper
ObjSUH.AddFavorite "http://www.csdn.net", "CSDN"
Set ObjSUH = Nothing
End S
=========================================================
9、如何使网页不出现滚动条:
Private S mnuScroll1_Click()
'注意:必须在网页完全显示之后才可以运行
WebBrowser1.Document.body.Scroll = "no" '不显示滚动条的办法
End S
Private S mnuScroll2_Click()
'注意:必须在网页完全显示之后才可以运行
WebBrowser1.Document.body.Scroll = "Auto" '显示滚动条的办法
End S
==============================================================
10、如何获得网页中被选中部分的HTML:
Private S Command1_Click()
Dim objSelection
Dim objTxtRange
Set objSelection = WebBrowser1.Document.selection
If Not (objSelection Is Nothing) Then
Set objTxtRange = objSelection.createRange
If Not (objTxtRange Is Nothing) Then
Debug.Print objTxtRange.htmlText
Set objTxtRange = Nothing
End If
Set objSelection = Nothing
End If
End S
Private S Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
End S
11、页面滚动:
Private S Command2_Click()
WebBrowser1.Document.parentwindow.scrollby 0, 30
End S
Private S Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
End S
点击Command2就可以使当前页面向下滚动30像素
12、判断页面是否可以前进后退
Private S Command1_Click()
WebBrowser1.GoForward
End S
Private S Command2_Click()
WebBrowser1.GoBack
End S
Private S Form_Load()
WebBrowser1.Navigate "http://www.applevb.com"
End S
Private S WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)
If (Command = CSC_NAVIGATEBACK) Then
Command2.Enabled = Enable
End If
If (Command = CSC_NAVIGATEFORWARD) Then
Command1.Enabled = Enable
End If
End S