1、Webbrowser控件史上最强技巧全集Webbrowser控件史上最强技巧全集VB调用webbrowser技巧集1、获得浏览器信息:Private Sub Command1_Click()WebBrowser1.Navigate .applevb.End SubPrivate Sub Command2_Click()Dim oWindowDim oNavSet oWindow = WebBrowser1.Document.parentWindowSet oNav = oWindow.navigatorDebug.Print oNav.userAgentSet oWindow = Nothin
2、gSet oNav = NothingEnd Sub点击Command1浏览网页,点击Command2在立即窗口中输出浏览器信息。2、弹出Webbrowser消息窗口Dim oWindowSet oWindow = WebBrowser1.Document.parentWindowoWindow.confirm abcdVB调用webbrowser技巧集2向Webbrowser中写入HTML容的几种方法首先在Form_Load中加入WebBrowser1.Navigate about:blank确保Webbrowser1可用方法1:Dim s As StringDim stream As IS
3、treams = s = s + s = s + s = s + hello worlds = s + s = s + WebBrowser1.Document.Write s方法2:Dim oSet o = WebBrowser1.Document.selection.createrangeDebug.Print oIf (Not o Is Nothing) Theno.pasteHTML 哈哈Set o = NothingEnd If方法3:插入文本框Dim oSet o = WebBrowser1.Document.selection.createrangeo.execCommand I
4、nsertTextArea, False, xxxvb调用Webbrowser技巧集31、页面滚动:Private Sub Command2_Click()WebBrowser1.Document.parentwindow.scrollby 0, 30End SubPrivate Sub Form_Load()WebBrowser1.Navigate .applevb.End Sub点击Command2就可以使当前页面向下滚动30像素2、判断页面是否可以前进后退Private Sub Command1_Click()WebBrowser1.GoForwardEnd SubPrivate Sub
5、 Command2_Click()WebBrowser1.GoBackEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate .applevb.End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NAVIGATEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NAVIGATEFORWARD) ThenCo
6、mmand1.Enabled = EnableEnd IfEnd SubVB调用webbrowser技巧集41、如何使网页不出现滚动条:Private Sub mnuScroll1_Click()#注意:必须在网页完全显示之后才可以运行WebBrowser1.Document.body.Scroll = no #不显示滚动条的办法End SubPrivate Sub mnuScroll2_Click()#注意:必须在网页完全显示之后才可以运行WebBrowser1.Document.body.Scroll = Auto #显示滚动条的办法End Sub2、如何获得网页中被选中部分的HTML:P
7、rivate Sub Command1_Click()Dim objSelectionDim objTxtRangeSet objSelection = WebBrowser1.Document.selectionIf Not (objSelection Is Nothing) ThenSet objTxtRange = objSelection.createRangeIf Not (objTxtRange Is Nothing) ThenDebug.Print objTxtRange.htmlTextSet objTxtRange = NothingEnd IfSet objSelectio
8、n = NothingEnd IfEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate .applevb.End SubNavigate 方 法 的 语 法 格 式 为:WebBrowser 控 件 名.Navigate URLFlags,TargetFrameName,PostData,Headers- WebBrowser 控 件 支 持 的 主 要 方 法 有:GoBack 回 退 到 上 一 屏。GoForward 进 入 到 下 一 屏。GoHome 回 家。 即 回 到 主 页。Stop 停 止 导 航。Refresh 刷 新。Nav
9、igate 导 航。- WebBrowser 控 件 所 响 应 的 事 件:- BeforeNavigate 事 件 在 开 始 导 航 前 发 生。 一 般 在 此 获 取 完 整 的URL 字 符 串。- WebBrowser 控 件 最 主 要 的 参 数:- URL 获 得 导 航 用 的 标 准URL 字 符 串。 例 如: 它 能 将”.MicroSoft.Com” 自 动 翻 译 为”.MicroSoft.Com”.URL 是Uniform Resource Locator 的 缩 写, 是 在Internet 的WWW 服 务 程 序 上 用 于 指 定 信 息 位 置 的
10、表 示 方 法。使用WebBrowser的Navigator或者Navigator2方法打开一个asp文档并且传递参数进去,但是asp文档无法获得参数,请教是什么原因?vb源码:Private Sub cmdSubmit_Click()Dim strURL As String, strFormData As StringDim strData As StringstrURL = Trim$(txtURL.Text)strFormData = name= & Trim$(txtName.Text) &password= & Trim$(txtPassword.Text)Call WBTest.N
11、avigate2(strURL, 64, _blank, strFormData,hello)End Subasp源码: * Option Explicit Private Sub Command1_Click() Dim szValue As String WebBrowser1.Document.body.innerHTML = 窗体顶端 method=post action=地址/xxx.php窗体底端WebBrowser1.Document.Forms(post).submitEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate2 abo
12、ut:blankEnd SubTop*请问:在WebBrwoser控件里提供的Navigate或者Navigate2方法中提供了传递数据的参数,调用方式为:WebBrowser1.Navigate2(URL,Flags,TargetFrameName,PostData,Headers)其中PostData参数就是一个提交参数字符串,例如name=aaa&password=123,但问题是为什么这个方法并不是有效的,服务器端不能取得数据?如果这个方法是有效的话就不需要用一段html代码模拟这种调用了。下面代码能检测出程序post出去的消息Private Sub WebBrowser1_Befor
13、eNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)MsgBox PostDataEnd SubWebBrowser的8个方法和13个属性WebBrowser的8个方法和13个属性,以及它们的功能:方法 说明GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项GoForward 相当于IE的“前进”按钮,使你在当前历史列表中
14、前进一项GoHome 相当于IE的“主页”按钮,连接用户默认的主页GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的URLRefresh 刷新当前页面Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值如下:REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新REFRESH_CONTINUE 仅作部使用。在MSDN里写着DO
15、NOT USE! 请勿使用REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器Stop 相当于IE的“停止”按钮,停止当前页面及其容的载入属性 说明Application 如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser控件的自动化对象Parent 返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口Container 返回WebBrowser控件容器的自动化对象。通常该值与Parent属性返回的值相同Do
16、cument 为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径TopLevelContainer 返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回trueType 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word DocumentLeft 返回或设置WebBrowser控件窗口的部左边与容器窗口左边的距离Top 返回或设置WebBrowser控件窗口的部左边与容器窗口顶边的距离Width 返回
17、或设置WebBrowser窗口的宽度,以像素为单位Height 返回或设置WebBrowser窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称LocationURL 返回WebBrowser当前正在显示的资源的URLBusy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作如何利用 WebBrowser 控件,显示 .GIF 动画?要有一定的网页知识(HTML、J
18、avaScript、CSS)注意细节:没有滚动条和鼠标右键弹出的 IE 上下文菜单,.HTM 源文件 .我写了一个,效果还真不错!Objects: Form1、Command1、CommonDialog1、WebBrowser1Option ExplicitPrivate Sub Command1_Click()CommonDialog1.ShowOpenIf VBA.Len(VBA.Trim(CommonDialog1.FileName) 0 ThenDim p As stdole.StdPictureDim sPath As StringsPath = VBA.Trim(VBA.Trim(
19、CommonDialog1.FileName)Set p = VB.LoadPicture(sPath)WebBrowser1.Width = p.Width * 16 / 26WebBrowser1.Height = p.Height * 16 / 26 WebBrowser1.Navigate about:blankWebBrowser1.Document.openWebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writel
20、n WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln End IfEnd SubPrivate Sub Form_Load()Command1.Caption = &OpenWebBrowser1.Navigate about:blankWebBrowser1.Document.openWebBrow
21、ser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.writeln WebBrowser1.Document.CloseEnd SubWebBrowser控件说明方法 说明GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项GoForward 相当于IE的“前
22、进”按钮,使你在当前历史列表中前进一项GoHome 相当于IE的“主页”按钮,连接用户默认的主页GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的URLRefresh 刷新当前页面Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自RefreshConstants枚举表,该表定义在ExDisp.h中,可以指定的不同值如下:REFRESH_NORMAL 执行简单的刷新,不将HTTP pragma: no-cache头发送给服务器REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新REFRESH_CONTINUE 仅作
23、部使用。在MSDN里写着DO NOT USE! 请勿使用REFRESH_COMPLETELY 将包含pragma: no-cache头的请求发送到服务器Stop 相当于IE的“停止”按钮,停止当前页面及其容的载入属性 说明Application 如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser控件的自动化对象Parent 返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿主或IE窗口Container 返回WebBrowser控件容器的自动化对象。通常该值与P
24、arent属性返回的值相同Document 为活动的文档返回自动化对象。如果HTML当前正被显示在WebBrowser中,则Document属性提供对DHTML Object Model的访问途径TopLevelContainer 返回一个Boolean值,表明IE是否是WebBrowser控件顶层容器,是就返回trueType 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word DocumentLeft 返回或设置WebBrowser控件窗口的部左边与容器窗口左边的距离Top 返回或设置WebBrowser控件窗口的部左边与容器
25、窗口顶边的距离Width 返回或设置WebBrowser窗口的宽度,以像素为单位Height 返回或设置WebBrowser窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称LocationURL 返回WebBrowser当前正在显示的资源的URLBusy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作WebBrowser 的事件Private Events De
26、scriptionBeforeNavigate2 导航发生前激发,刷新时不激发CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭Back和Forward菜单项或按钮DocumentComplete 当整个文档完成是激发,刷新页面不激发DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件NavigateComplete2 导航完成后激发,刷新时不激发NewWindow2 在创建新窗口以前激发OnFullScreen 当FullScreen属性改变时激发。该
27、事件采用VARIENT_BOOL的一个输入参数来指示IE是全屏显示方式(VARIENT_TRUE)还是普通显示方式(VARIENT_FALSE)OnMenuBar 改变MenuBar的属性时激发,标示参数是VARIENT_BOOL类型的。VARIANT_TRUE是可见,VARIANT_ FALSE是隐藏OnQuit 无论是用户关闭浏览器还是开发者调用Quit方法,当IE退出时就会激发OnStatusBar 与OnMenuBar调用方法相同,标示状态栏是否可见。OnToolBar 调用方法同上,标示工具栏是否可见。OnVisible 控制窗口的可见或隐藏,也使用一个VARIENT_BOOL类型的
28、参数StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏TitleChange Title有效或改变时激发WEBBROWSER 技巧(收藏)看到很多关于WebBrowser控件禁止右键的提问,回复的方法很多,其中有提到使用微软提供的Webbrowser扩展COM服务器对象(WBCustomizer.dll),但是该方法在我们想使用Webbrowser编辑网页(Webbrowser1.Document.execCommand editMode)的时候有很多弊端,比如不能显示选中的文本等。另有些方法也就不用一一列举了。这儿我想提到的是关于MSHTML.HTMLDocument引用Microsoft HTML OBject LibraryRem 窗体代码Dim WithEvents M_Dom As MSHTML.HTMLDocumentPrivate Function M_Dom_oncontextmenu() As Boolea
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1