vb webbrowser控件详解

vb+webbrowser控件详解

1、获得浏览器信息

private sub command1_click()

webbrowser1.navigate ""

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 = "hello world "

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 ""

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 ""

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 ""

end sub

navigate 方 法 的 语 法 格 式 为:

webbrowser1.navigate url

[flags][targetframename][postdata][headers]

webbrowser 控件支持的主要方法有:

goback———回退到上一屏。

goforward———进入到下一屏。

gohome———回家。即回到主页。

stop———停止导航。

refresh———刷新。

navigate———导航。

webbrowser控件所响应的事件:

 beforenavigate事件 ———在开始导航前发生。一般在此获取完整的url字符串。

 webbrowser控件 最主要的参数:

 url ———获得导航用的标准url字符串。例如:它能将””自动翻译为””

使用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源码:

*********************************************************************

option explicit

private sub command1_click()

dim szvalue as string

webbrowser1.document.body.innerhtml = "method=post action=http://地址/xxx.php>"

webbrowser1.document.forms("post").submit

end sub

private sub form_load()

webbrowser1.navigate2 "about:blank"

end sub

********************************************************************

请问:在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

webbrowser的8个方法和13个属性

WebBrowser 参数原型:

WebBrowser1.Navigate [Flags,][TargetFrameName,][PostData,][Headers]

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 的事件:

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 控件显示 .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 ""

webbrowser1.document.writeln "webbrowser1.document.writeln "

webbrowser1.document.writeln ""

end if

end sub

private sub form_load()

command1.caption = "&open"

webbrowser1.navigate "about:blank"

webbrowser1.document.open

webbrowser1.document.writeln ""

webbrowser1.document.writeln "webbrowser1.document.writeln ""

webbrowser1.document.writeln ""

webbrowser1.document.close

end sub

webbrowser 的事件

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控件.