VB调用webbrowser技巧集
今天使用 VB调用webbrowser,所以在网上看到了些代码,不错复制过来,具体原文出处不知道。
?
VB调用webbrowser技巧集1
1、获得浏览器信息:
Private?Sub?Command1_Click()
????WebBrowser1.Navigate?"http://www.baidu.com"
End?Sub
Private?Sub?Command2_Click()
????Dim?oWindow
????Dim?oNav
????
????Set?oWindow?=?WebBrowser1.Document.parentWindow
????Set?oNav?=?oWindow.navigator
????Debug.Print?oNav.userAgent
????
????Set?oWindow?=?Nothing
????Set?oNav?=?Nothing
End?Sub
?
点击Command1浏览网页,点击Command2在立即窗口中输出浏览器信息。
?
2、弹出Webbrowser消息窗口
????Dim?oWindow
????
????Set?oWindow?=?WebBrowser1.Document.parentWindow
????oWindow.confirm?"abcd"
VB调用webbrowser技巧集2?
向Webbrowser中写入HTML内容的几种方法
首先在Form_Load中加入
WebBrowser1.Navigate?"about:blank"
确保Webbrowser1可用
?
方法1:
?Dim?s?As?String
?Dim?stream?As?IStream
?
?s?=?""
?s?=?s?+?""
?s?=?s?+?""
?s?=?s?+?"?
hello?world
"
?s?=?s?+?""
?s?=?s?+?"?
?WebBrowser1.Document.Write?s?
?
?
方法2:
?Dim?o
?
?Set?o?=?WebBrowser1.Document.selection.createrange
?Debug.Print?o
?If?(Not?o?Is?Nothing)?Then
?o.pasteHTML?"哈哈"
?Set?o?=?Nothing
?End?If
?
方法3:
?'插入文本框
?Dim?o
?Set?o?=?WebBrowser1.Document.selection.createrange
?
?o.execCommand?"InsertTextArea",?False,?"xxx"
?
vb调用Webbrowser技巧集3
1、页面滚动:
Private?Sub?Command2_Click()
WebBrowser1.Document.parentwindow.scrollby?0,?30
End?Sub
Private?Sub?Form_Load()
WebBrowser1.Navigate?"http://www.baidu.com"
End?Sub
点击Command2就可以使当前页面向下滚动30像素
2、判断页面是否可以前进后退
Private?Sub?Command1_Click()
WebBrowser1.GoForward
End?Sub
Private?Sub?Command2_Click()
WebBrowser1.GoBack
End?Sub
Private?Sub?Form_Load()
WebBrowser1.Navigate?"http://www.baidu.com"
End?Sub
Private?Sub?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?Sub
?
VB调用webbrowser技巧集4
1、如何使网页不出现滚动条:?
Private?Sub?mnuScroll1_Click()?
@#注意:必须在网页完全显示之后才可以运行?
WebBrowser1.Document.body.Scroll?=?"no"?@#不显示滚动条的办法?
End?Sub?
Private?Sub?mnuScroll2_Click()?
@#注意:必须在网页完全显示之后才可以运行?
WebBrowser1.Document.body.Scroll?=?"Auto"?@#显示滚动条的办法?
End?Sub?
2、如何获得网页中被选中部分的HTML:?
Private?Sub?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?Sub?
Private?Sub?Form_Load()?
WebBrowser1.Navigate?"http://www.baidu.com"?
End?Sub
?
?
?
Navigate?方?法?的?语?法?格?式?为:?
?WebBrowser?控?件?名.Navigate?URL?
[Flags,][TargetFrameName,][PostData,][Headers]
----?WebBrowser?控?件?支?持?的?主?要?方?法?有:?
GoBack?—?—?—?回?退?到?上?一?屏。
GoForward?—?—?—?进?入?到?下?一?屏。
GoHome?—?—?—?回?家。?即?回?到?主?页。
Stop?—?—?—?停?止?导?航。
Refresh?—?—?—?刷?新。
Navigate?—?—?—?导?航。
----?WebBrowser?控?件?所?响?应?的?事?件:?
----?BeforeNavigate?事?件?—?—?—?在?开?始?导?航?前?发?生。?一?般?在?此?获?取?完?整?的URL?字?符?串。?
----?WebBrowser?控?件?最?主?要?的?参?数:?
----?URL?—?—?—?获?得?导?航?用?的?标?准URL?字?符?串。?例?如:?它?能?将”www.MicroSoft.Com”?自?动?翻?译?为”http://www.MicroSoft.Com”.URL?是Uniform?Resource?Locator?的?缩?写,?是?在Internet?的WWW?服?务?程?序?上?用?于?指?定?信?息?位?置?的?表?示?方?法。
?
使用WebBrowser的Navigator或者Navigator2方法打开一个asp文档并且传递
参数进去,但是asp文档无法获得参数,请教是什么原因??
?
?vb源码:?
?Private?Sub?cmdSubmit_Click()?
?Dim?strURL?As?String,?strFormData?As?String?
?Dim?strData?As?String?
?strURL?=?Trim$(txtURL.Text)?
?strFormData?=?"name="?&?Trim$(txtName.Text)?&?
"&password="?&?Trim$(txtPassword.Text)?
?Call?WBTest.Navigate2(strURL,?64,?"_blank",?strFormData,?
"hello")?
?End?Sub?
?
?asp源码:?
?
?<%@?Language=VBScript?%>?
?<%?
?dim?strName?
?dim?strPassword?
?strName=Trim(Request.Form("name"))?
?strPassword=Trim(Request.Form("password"))?
?Response.Write(strName)?
?Response.Write(strPassword)?
?if?strName="KingZhang"?and?strPassword="123456"?then?
?Response.Write("<font?color=green>登陆成功</font>")?
?else?
?Response.Write("<font?color=red>非法登陆用户!</red>")?
?end?if?
?
?%>?
?<HTML>?
?<HEAD>?
?<META?NAME="GENERATOR"?charset="gb2312"?Content="Microsoft?
Visual?Studio?6.0">?
?</HEAD>?
?<BODY>?
?
?<P>?</P>?
?
?</BODY>?
?</HTML>?
?
?*********************************************************************
?
?Option?Explicit?
?
?Private?Sub?Command1_Click()?
?Dim?szValue?As?String?
?WebBrowser1.Document.body.innerHTML?=?"<form?id=post?
method=post?action=http://地址/xxx.php><input?type=text?value='"?
?&?szValue?&?"'></form>"?
?WebBrowser1.Document.Forms("post").submit?
?End?Sub?
?
?Private?Sub?Form_Load()?
?WebBrowser1.Navigate2?"about:blank"?
?End?Sub
Top
********************************************************************
请问:在WebBrwoser控件里提供的Navigate或者Navigate2方法中提供了传递数据
的参数,调用方式为:WebBrowser1.Navigate2(URL,[Flags],
[TargetFrameName],[PostData],[Headers])?
?其中PostData参数就是一个提交参数字符串,例如"name=aaa&password=123",
但问题是为什么这个方法并不是有效的,服务器端不能取得数据??
?如果这个方法是有效的话就不需要用一段html代码模拟这种调用了。
?
下面代码能检测出程序post出去的消息
Private?Sub?WebBrowser1_BeforeNavigate2(ByVal?pDisp?As?Object,?URL?As?Variant,?Flags?As?Variant,?TargetFrameName?As?Variant,?PostData?As?Variant,?Headers?As?Variant,?Cancel?As?Boolean)?
?MsgBox?PostData?
?End?Sub
?
对5F的补充
WebBrowser的8个方法和13个属性
WebBrowser的8个方法和13个属性,以及它们的功能:
方法?说明?
GoBack?相当于IE的“后退”按钮,使你在当前历史列表中后退一项
?
GoForward?相当于IE的“前进”按钮,使你在当前历史列表中前进一项?
GoHome?相当于IE的“主页”按钮,连接用户默认的主页?
GoSearch?相当于IE的“搜索”按钮,连接用户默认的搜索页面?
Navigate?连接到指定的URL?
Refresh?刷新当前页面?
Refresh2?同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,
该表定义在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL?执行简单的刷新,不将HTTP?pragma:?no-cache头发送给服务器
REFRESH_IFEXPIRED?只有在网页过期后才进行简单的刷新
REFRESH_CONTINUE?仅作内部使用。在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控件顶层容器,是就返回true
?
Type?返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返
回Microsoft?Word?Document?
Left?返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离?
Top?返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离?
Width?返回或设置WebBrowser窗口的宽度,以像素为单位?
Height?返回或设置WebBrowser窗口的高度,以像素为单位?
LocationName?返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源
是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称?
LocationURL?返回WebBrowser当前正在显示的资源的URL?
Busy?返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true
就可以使用stop方法来撤销正在执行的访问操作
?
如何利用?WebBrowser?控件,显示?.GIF?动画?
要有一定的网页知识(HTML、JavaScript、CSS)
注意细节:
没有"滚动条"和"鼠标右键弹出的?IE?上下文菜单",".HTM?源文件"?...
我写了一个,效果还真不错!
'Objects:?Form1、Command1、CommonDialog1、WebBrowser1
Option?Explicit
Private?Sub?Command1_Click()
CommonDialog1.ShowOpen
If?VBA.Len(VBA.Trim(CommonDialog1.FileName))?>?0?Then
?Dim?p?As?stdole.StdPicture
?Dim?sPath?As?String
?sPath?=?VBA.Trim(VBA.Trim(CommonDialog1.FileName))
?Set?p?=?VB.LoadPicture(sPath)
?WebBrowser1.Width?=?p.Width?*?16?/?26
?WebBrowser1.Height?=?p.Height?*?16?/?26
'?WebBrowser1.Navigate?"about:blank"
?WebBrowser1.Document.open
?WebBrowser1.Document.writeln?"<HTML>"
?WebBrowser1.Document.writeln?"<HEAD>"
?WebBrowser1.Document.writeln?"<TITLE>"
?WebBrowser1.Document.writeln?"</TITLE>"
?WebBrowser1.Document.writeln?"</HEAD>"
?WebBrowser1.Document.writeln?"<BODY?scroll="?&?VBA.Chr(34)?&?"no"?&?VBA.Chr(34)?&?"?oncontextmenu=self.event.returnValue=false>"
?WebBrowser1.Document.writeln?"<div?style="?&?VBA.Chr(34)?&?"position:absolute;?left:?0;?top:?0"?&?VBA.Chr(34)?&?">"
?WebBrowser1.Document.writeln?"<IMG?SRC="?&?VBA.Chr(34)?&?sPath?&?VBA.Chr(34)?&?"?BORDER="?&?VBA.Chr(34)?&?"0"?&?VBA.Chr(34)?&?">"
?WebBrowser1.Document.writeln?"</div>"
?WebBrowser1.Document.writeln?"</BODY>"
?WebBrowser1.Document.writeln?"</HTML>"
End?If
End?Sub
Private?Sub?Form_Load()
Command1.Caption?=?"&Open"
WebBrowser1.Navigate?"about:blank"
WebBrowser1.Document.open
WebBrowser1.Document.writeln?"<HTML>"
WebBrowser1.Document.writeln?"<HEAD>"
WebBrowser1.Document.writeln?"<TITLE>"
WebBrowser1.Document.writeln?"</TITLE>"
WebBrowser1.Document.writeln?"</HEAD>"
WebBrowser1.Document.writeln?"<BODY?scroll="?&?VBA.Chr(34)?&?"no"?&?VBA.Chr(34)?&?"?oncontextmenu=self.event.returnValue=false>"
WebBrowser1.Document.writeln?"</BODY>"
WebBrowser1.Document.writeln?"</HTML>"
WebBrowser1.Document.Close
End?Sub
?
WebBrowser控件说明
方法?说明?
? GoBack?相当于IE的“后退”按钮,使你在当前历史列表中后退一项?
?
? GoForward?相当于IE的“前进”按钮,使你在当前历史列表中前进一项?
? GoHome?相当于IE的“主页”按钮,连接用户默认的主页?
? GoSearch?相当于IE的“搜索”按钮,连接用户默认的搜索页面?
? Navigate?连接到指定的URL?
? Refresh?刷新当前页面?
? Refresh2?同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,?
?该表定义在ExDisp.h中,可以指定的不同值如下:?
?REFRESH_NORMAL?执行简单的刷新,不将HTTP?pragma:?no-cache头发送给服务器?
?REFRESH_IFEXPIRED?只有在网页过期后才进行简单的刷新?
?REFRESH_CONTINUE?仅作内部使用。在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控件顶层容器,是就返回true?
?
? Type?返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返?
?回Microsoft?Word?Document?
? Left?返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离?
? Top?返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离?
? Width?返回或设置WebBrowser窗口的宽度,以像素为单位?
? Height?返回或设置WebBrowser窗口的高度,以像素为单位?
? LocationName?返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源?
?是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称?
? LocationURL?返回WebBrowser当前正在显示的资源的URL?
? Busy?返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true?
?就可以使用stop方法来撤销正在执行的访问操作?
?
?
?WebBrowser?的事件?
?Private?Events?Description?
?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?如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏?
?TitleChange?Title有效或改变时激发
?
WEBBROWSER?技巧(收藏)?
?看到很多关于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?Sub?Webbrowser1_DownloadComplete()?
?Set?M_Dom?=?Webbrowser1.Document?
?End?Sub?
?
?Rem?好了,右键菜单没有了?
?
?
?
?=======================================================================?
?
?控件调用和获得收藏夹里面?
?
?基本上用?specialfolder(6?)?就可以得到收藏夹的路径,?然后你可以用dir去循环读入每个目录,然后dir里面的file,?file的名字就是你要的收藏的名字,?路径可以自己根据从上面得到的路径去得到.?
?如果你不用dir也可以用vb的dir控件.?
?Private?Type?SHITEMID?
?cb?As?Long?
?abID?As?Byte?
?End?Type?
?
?Public?Type?ITEMIDLIST?
?mkid?As?SHITEMID?
?End?Type?
?Public?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?
?================================================================?
?
?是的,webbrowser本生是一个控件,?你要它全屏,就是要它所在的窗体全屏,?可以用setwindowlong取消窗体的?title,?用Call?ShowWindow(FindWindow(Shell_traywnd,?),?0)?隐藏tray,就是下边那个包含开始那一行.?用Call?ShowWindow(FindWindow(Shell_traywnd,?),?9)?恢复.?够详细了吧.?
?
?然后在form1.windowstate?=?2?就可以了.?
?
?====================================================================?
?选择网页上的内容。?
?Private?Sub?Command1_Click()?
?请先选中一些内容?
?Me.WebBrowser1.ExecWB?OLECMDID_COPY,?OLECMDEXECOPT_DODEFAULT?
?MsgBox?Clipboard.GetText?
?End?Sub?
?
?=============================================================?
?用IE来下载文件?
?Private?Declare?Function?DoFileDownload?Lib?shdocvw.dll?(ByVal?lpszFile?As?String)?As?Long?
?
?
?Private?Sub?Command1_Click()?
?
?Dim?sDownload?As?String?
?
?sDownload?=?StrConv(Text1.Text,?vbUnicode)?
?Call?DoFileDownload(sDownload)?
?
?End?Sub
?
保存webbrowser中的HTML内容
Dim?oPF?As?IPersistFile?
?Set?oPF?=?WebBrowser1.Document?
?oPF.Save?"TheFileNameHere.htm",?False