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个属性,以及它们的功能:
|
WebBrowser 的事件:
|
如何利用 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控件.