WebBrowser控件使用详解.docx
《WebBrowser控件使用详解.docx》由会员分享,可在线阅读,更多相关《WebBrowser控件使用详解.docx(17页珍藏版)》请在冰豆网上搜索。
WebBrowser控件使用详解
WebBrowser控件使用详解
方法
⏹GoBack相当于IE的“后退”按钮,使你在当前历史列表中后退一项
⏹GoForward相当于IE的“前进”按钮,使你在当前历史列表中前进一项
⏹GoHome相当于IE的“主页”按钮,连接用户默认的主页
⏹GoSearch相当于IE的“搜索”按钮,连接用户默认的搜索页面
⏹Navigate连接到指定的URL
⏹Stop相当于IE的“停止”按钮,停止当前页面及其内容的载入
⏹Refresh刷新当前页面
⏹Refresh2同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL执行简单的刷新,不将HTTPpragma:
no-cache头发送给服务器
REFRESH_IFEXPIRED只有在网页过期后才进行简单的刷新
REFRESH_CONTINUE仅作内部使用。
在MSDN里写着DONOTUSE!
请勿使用
REFRESH_COMPLETELY将包含pragma:
no-cache头的请求发送到服务器
属性
⏹Application如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。
如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser控件的自动化对象
⏹Parent返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口
⏹Container返回WebBrowser控件容器的自动化对象。
通常该值与Parent属性返回的值相同
⏹Document为活动的文档返回自动化对象。
如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTMLObjectModel的访问途径
⏹TopLevelContainer返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回true
⏹Type返回已被WebBrowser控件加载的对象的类型。
例如:
如果加载.doc文件,就会返回MicrosoftWordDocument
⏹Left返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离
⏹Top返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离
⏹Width返回或设置WebBrowser窗口的宽度,以像素为单位
⏹Height返回或设置WebBrowser窗口的高度,以像素为单位
⏹LocationName返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称
⏹LocationURL返回WebBrowser当前正在显示的资源的URL
⏹Busy返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作
事件
⏹BeforeNavigate2导航发生前激发,刷新时不激发
⏹CommandStateChange当命令的激活状态改变时激发。
它表明何时激活或关闭Back和Forward菜单项或按钮
⏹DocumentComplete当整个文档完成是激发,刷新页面不激发
⏹DownloadBegin当某项下载操作已经开始后激发,刷新也可激发此事件
⏹DownloadComplete当某项下载操作已经完成后激发,刷新也可激发此事件
⏹NavigateComplete2导航完成后激发,刷新时不激发
⏹NewWindow2在创建新窗口以前激发
⏹OnFullScreen当FullScreen属性改变时激发。
该事件采用VARIENT_BOOL的一个输
⏹入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显示方式(VARIENT_FALSE)
⏹OnMenuBar改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。
⏹VARIANT_TRUE是可见,VARIANT_FALSE是隐藏
⏹OnQuit无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发
⏹OnStatusBar与OnMenuBar调用方法相同,标示状态栏是否可见。
⏹OnToolBar调用方法同上,标示工具栏是否可见。
⏹OnVisible控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的参数
⏹StatusTextChange如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏
⏹TitleChangeTitle有效或改变时激发
使用技巧
1.禁止右键
看到很多关于WebBrowser控件禁止右键的提问,回复的方法很多,其中有提到使用微软提供的Webbrowser扩展COM服务器对象(WBCustomizer.dll),但是该方法在我们想使用Webbrowser编辑网页(Webbrowser1.Document.execCommand"editMode")的时候有很多弊端,比如不能显示选中的文本等。
另有些方法也就不用一一列举了。
这儿我想提到的是关于MSHTML.HTMLDocument
引用MicrosoftHTMLOBjectLibrary
Rem#窗体代码#
DimWithEventsM_DomAsMSHTML.HTMLDocument
PrivateFunctionM_Dom_oncontextmenu()AsBoolean
M_Dom_oncontextmenu=False
EndFunction
PrivateSubWebbrowser1_DownloadComplete()
SetM_Dom=Webbrowser1.Document
EndSub
Rem好了,右键菜单没有了
=====================================================================
2.控件调用和获得收藏夹里面
基本上用specialfolder(6)就可以得到收藏夹的路径,然后你可以用dir去循环读入每个目录,然后dir里面的file,file的名字就是你要的收藏的名字,路径可以自己根据从上面得到的路径去得到。
如果你不用dir也可以用vb的dir控件.
PrivateTypeSHITEMID
cbAsLong
abIDAsByte
EndType
PublicTypeITEMIDLIST
mkidAsSHITEMID
EndType
PublicFunctionSpecialFolder(ByRefCSIDLAsLong)AsString
'locatethefavoritesfolder
DimRAsLong
DimsPathAsString
DimIDLAsITEMIDLIST
ConstNOERROR=0
ConstMAX_LENGTH=260
R=SHGetSpecialFolderLocation(MDIMain.hwnd,CSIDL,IDL)
IfR=NOERRORThen
sPath=Space$(MAX_LENGTH)
R=SHGetPathFromIDList(ByValIDL.mkid.cb,ByValsPath)
IfRThen
SpecialFolder=Left$(sPath,InStr(sPath,vbNullChar)-1)
EndIf
EndIf
EndFunction
=====================================================================
3.全屏
是的,webbrowser本生是一个控件,你要它全屏,就是要它所在的窗体全屏,可以用setwindowlong取消窗体的title,用CallShowWindow(FindWindow("Shell_traywnd",""),0)隐藏tray,就是下边那个包含开始那一行.用CallShowWindow(FindWindow("Shell_traywnd",""),9)恢复.够详细了吧.
然后在form1.windowstate=2就可以了.
=====================================================================
4.选择网页上的内容。
PrivateSubCommand1_Click()
'请先选中一些内容
Me.WebBrowser1.ExecWBOLECMDID_COPY,OLECMDEXECOPT_DODEFAULT
MsgBoxClipboard.GetText
EndSub
=====================================================================
5.用IE来下载文件
PrivateDeclareFunctionDoFileDownloadLib"shdocvw.dll"(ByVallpszFileAsString)AsLong
PrivateSubCommand1_Click()
DimsDownloadAsString
sDownload=StrConv(Text1.Text,vbUnicode)
CallDoFileDownload(sDownload)
EndSub
PrivateSubForm_Load()
Text1.Text="http:
//www.chat.ru/~softdaily/fo-ag162.zip"
Form1.Caption="Audiograbber1.62Full"
Text2.Text="
EndSub
=====================================================================
6.我要动态加载和删除WebBrowser控件应该怎么做?
PrivateSubCommand1_Click()
Form1.Controls.Add"shell.explorer.2","NewWeb",Form1
WithForm1!
NewWeb
.Visible=True
.Width=10000
.Height=10000
.Left=0
.Top=0
.Navigate2""
EndWith
EndSub
PrivateSubCommand2_Click()
Controls.RemoveForm1!
newweb
EndSub
Form1.Controls.Add"shell.explorer.2",newweb(newweb.Count),Form1
WithForm1!
newweb(newweb.Count)
.Visible=True
.Width=1000
.Height=1000
.Left=newweb(newweb.Count-1).Left+newweb(newweb.Count-1).Width
.Top=0
'.Navigate2""
EndWith
为什么他说我
Form1.Controls.Add"shell.explorer.2",newweb(newweb.Count),Form1
这一行错误13类型不匹配?
ps:
我在form中已经有了一个newweb(0)控件
先为一个WebBrowser
DimiAsInteger
PrivateSubAddWeb_Click()
Fori=1To10
LoadNewWeb(i)
NewWeb(i).Top=i*100
NewWeb(i).Left=i*100
NewWeb(i).Visible=True
Nexti
EndSub
PrivateSubDelWeb_Click()
Fori=1To10
UnloadNewWeb(i)
Nexti
EndSub
=====================================================================
7.一个把页面保存为MHT(即MHTML)文件
将pcwak(书剑狂生[MSMVP])大侠提供的资料贴出来,以供大家参考:
我终于找到一个把页面保存为MHT(即MHTML)文件的方法了!
首先,在工程中必须要引用一个库:
LibraryCDO
D:
\WINNT\System32\cdosys.dll
MicrosoftCDOforWindows2000Library
其次,需要Stream对应的接口的支持,如果你一时找不到就使用支持这个的较新的ADO就行了,如
LibraryADODB
D:
\ProgramFiles\CommonFiles\system\ado\msado15.dll
MicrosoftActiveXDataObjects2.5Library
代码如下,十分简单(同时由于流的特点,显示在实际应用中没必要象本例中那样把文件保存到磁盘上就可直接转换为字符串或字节数组什么的处理的。
另,对于MicrosoftCDOforWindows2000Library这个库,在WIN98中要怎么使用还没试过,感兴趣的朋友可以试试并跟帖,以丰富完善其内容:
)
PrivateSubCommand1_Click()
'ReferencetoMicrosoftActiveXDataObjects2.5Library
'ReferencetoMicrosoftCDOforWindows2000Library
DimiMsgAsNewCDO.Message
DimiConfAsNewCDO.Configuration
DimobjStreamAsADODB.Stream
WithiMsg
.CreateMHTMLBody",_
"domain\username",_
"password"
SetobjStream=.GetStream
CallobjStream.SaveToFile("f:
\test.mht",adSaveCreateOverWrite)
EndWith
EndSub
2、
'首先加入对ADODB和CDO(MicrosoftCDOforWindows2000Library,对应文件名为CDOSYS.dll)的引用
PrivateSubCommand1_Click()
DimmessageAsNewCDO.message
DimOutstreamAsADODB.Stream
OnErrorGoTomyerr1
Callmessage.CreateMHTMLBody("",CDO.CdoMHTMLFlags.cdoSuppressNone,"","")
SetOutstream=message.GetStream
CallOutstream.SaveToFile("c:
\test.mht",ADODB.SaveOptionsEnum.adSaveCreateOverWrite)
MsgBox"完成"
ExitSub
myerr1:
Setmessage=Nothing
SetOutstream=Nothing
EndSub
=====================================================================
8.在WebBrowser控件调用收藏夹和在收藏夹里添加收藏
OptionExplicit
PrivateSubCommand1_Click()
DimObjSUHAsNewShellUIHelper
ObjSUH.AddFavorite"","CSDN"
SetObjSUH=Nothing
EndSub
=====================================================================
9.如何使网页不出现滚动条:
PrivateSubmnuScroll1_Click()
'注意:
必须在网页完全显示之后才可以运行
WebBrowser1.Document.body.Scroll="no"'不显示滚动条的办法
EndSub
PrivateSubmnuScroll2_Click()
'注意:
必须在网页完全显示之后才可以运行
WebBrowser1.Document.body.Scroll="Auto"'显示滚动条的办法
EndSub
=====================================================================
10.如何获得网页中被选中部分的HTML:
PrivateSubCommand1_Click()
DimobjSelection
DimobjTxtRange
SetobjSelection=WebBrowser1.Document.selection
IfNot(objSelectionIsNothing)Then
SetobjTxtRange=objSelection.createRange
IfNot(objTxtRangeIsNothing)Then
Debug.PrintobjTxtRange.htmlText
SetobjTxtRange=Nothing
EndIf
SetobjSelection=Nothing
EndIf
EndSub
PrivateSubForm_Load()
WebBrowser1.Navigate""
EndSub
=====================================================================
11.页面滚动:
PrivateSubCommand2_Click()
WebBrowser1.Document.parentwindow.scrollby0,30
EndSub
PrivateSubForm_Load()
WebBrowser1.Navigate""
EndSub
点击Command2就可以使当前页面向下滚动30像素
=====================================================================
12.判断页面是否可以前进后退
PrivateSubCommand1_Click()
WebBrowser1.GoForward
EndSub
PrivateSubCommand2_Click()
WebBrowser1.GoBack
EndSub
PrivateSubForm_Load()
WebBrowser1.Navigate""
EndSub
PrivateSubWebBrowser1_CommandStateChange(ByValCommandAsLong,ByValEnableAsBoolean)
If(Command=CSC_NAVIGATEBACK)Then
Command2.Enabled=Enable
EndIf
If(Command=CSC_NAVIGATEFORWARD)Then
Command1.Enabled=Enable
EndIf
EndSub
上面的command1是前进按钮,command2是后退按钮
=====================================================================
13.获得浏览器信息:
PrivateSubCommand1_Click()
WebBrowser1.Navigate""
EndSub
PrivateSubCommand2_Click()
DimoWindow
DimoNav
SetoWindow=WebBrowser1.Document.parentWindow
SetoNav=oWindow.navigator
Debug.PrintoNav.userAgent
SetoWindow=Nothing
SetoNav=Nothing
EndSub
点击Command1浏览网页,点击Command2在立即窗口中输出浏览器信息。
=====================================================================
14.弹出Webbrowser消息窗口
DimoWindow
SetoWindow=WebBrowser1.Document.parentWindow
oWindow.confirm"abcd"
=====================================================================
15.向Webbrowser中写入HTML内容的几种方法
首先在Form_Load中加入
WebBrowser1.Navigate"about:
blank"
确保Webbrowser1可用
方法1:
DimsAsString
DimstreamAsIStre