VB关于webbrowser相关操作大全_第1页
VB关于webbrowser相关操作大全_第2页
VB关于webbrowser相关操作大全_第3页
VB关于webbrowser相关操作大全_第4页
VB关于webbrowser相关操作大全_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、15VB 关于 webbrowser 相关操作大全 日期: 2011-2-17 文档收集者:1、网页按钮的终极控制1、防止新窗口里头打开网页代码 1:Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Dim frm As Form1Set frm = New Form1frm.Visible = TrueSet ppDisp = frm.WebBrowser1.objectEnd Sub代码 2:有这段代码, 有许多网页会出错,经常提示脚本错误,可以用 silent 属性为 True 来屏蔽, 不过也有

2、些不足! !Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) Cancel = TrueWebBrowser1.Navigate2 WebBrowser1.Document.activeElement.hrefEnd Sub代码 3:Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean) On Error Resume NextDim frmWB As Form1Set frmWB = New Form1frmWB

3、.WebBrowser1.RegisterAsBrowser = TrueSet ppDisp = frmWB.WebBrowser1.objectfrmWB.Visible = TruefrmWB.Top = Form1.TopfrmWB.Left = Form1.Left frmWB.Width = Form1.Width frmWB.Height = Form1.HeightEnd Sub功能差不多,任选一个。2、去掉滚动条Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Web

4、Browser1.Document.Body.Scroll = noEnd Sub实际上上面的效果不咋地, 如果懂得 HTML 知识, 你可以在读取网页的时候, 读取 HTML 源码, 查找替换, 再写入只需在 之间插入代码: 即可。其中 x 表示水平滚动条,将其改为 y 的话就 可以隐藏垂直滚动条。当然也有其他方法, 比如修改网页的尺寸呀? 有的时候部分元素的居中改为左对齐也能有 效果将 WebBrower 放在 PictureBox 控件中,用 PictureBox 的边框挡住 WebBrower 的边框。 例如 ,将 WebBrowser1 放大点 ,将 PictureBox 变小点 .

5、PictureBox 的 appearance 设置为 0-flat , 呵呵, OK3、禁止鼠标右键Private Function M_Dom_oncontextmenu() As Boolean Webbrowser1.Document.oncontextmenu = False End Function引用 Microsoft HTML OBject LibraryDim WithEvents M_Dom As MSHTML.HTMLDocument Private Function M_Dom_oncontextmenu() As Boolean M_Dom_oncontextmen

6、u = FalseEnd FunctionPrivate Sub Webbrowser1_DownloadComplete()Set M_Dom = Webbrowser1.DocumentEnd Sub4、如何获得网页的内容先给个例子:innerHTML: 设置或获取位于对象起始和结束标签内的 HTML测试一下: 这是一个层 function getinnerHTML() alert(document.getElementById(d).innerHTML)function setinnerHTML()document.getElementById(d).innerHTML= 这 是一个层

7、,嘿嘿 5、多框架框架页面访问下面两句可以访问到多框架内容 .Document.ParentWindow.Frames.Length.Document.ParentWindow.Frames(1).Document.all.tags(a)等待多框架网页全部加载完毕,否则出错While .Busy Or .ReadyState 4 Or .Document.ParentWindow.Frames.Length = 0 DoEventsWend6、获得浏览器信息Private Sub Command1_Click()WebBrowser1.Navigate End SubPrivate Sub C

8、ommand2_Click()Dim oWindowDim oNavSet oWindow = WebBrowser1.Document.parentWindowSet oNav = oWindow.navigatorDebug.Print oNav.userAgentSet oWindow = NothingSet oNav = NothingEnd Sub7、弹出 Webbrowser 消息窗口Dim oWindowSet oWindow = WebBrowser1.Document.parentWindow oWindow.confirm abcdVB 调用 webbrowser 技巧集

9、 2向 Webbrowser 中写入 HTML 内容的几种方法向 Webbrowser 中写入 HTML 内容的几种方法首先在 Form_Load 中加入WebBrowser1.Navigate about:blank确保 Webbrowser1 可用方法 1:Dim s As StringDim stream As IStreamIlliIlliIlliIIhello worldIIIlliIIWebBrowser1.Document.Write s方法 2:Dim oSet o = WebBrowser1.Document.selection.createrange Debug.Print

10、 oIf (Not o Is Nothing) Then o.pasteHTML 哈哈 Set o = NothingEnd If方法 3:插入文本框Dim oSet o = WebBrowser1.Document.selection.createrange o.execCommand InsertTextArea, False, xxx9、控制页面滚动WebBrowser1.Document.parentwindow.scrollby 0, 3010、判断页面是否可以前进后退Private Sub Command1_Click()WebBrowser1.GoForwardEnd SubPr

11、ivate Sub Command2_Click()WebBrowser1.GoBackEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NA VIGA TEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NA VIGA TEFORWARD) Th

12、enCommand1.Enabled = EnableEnd IfEnd Sub11、 如 何 获 得 网 页 中 被 选 中 部 分 的 HTMLPrivate Sub Command1_Click()Dim objSelectionDim objTxtRangeSet objSelection = WebBrowser1.Document.selection If Not (objSelection Is Nothing) ThenSet objTxtRange = objSelection.createRangeIf Not (objTxtRange Is Nothing) ThenDe

13、bug.Print objTxtRange.htmlTextSet objTxtRange = Nothing End IfSet objSelection = Nothing End IfEnd Sub12、 Navigate 的参数调用请问:在 WebBrwoser 控件里提供的 Navigate 或者 Navigate2 方法中提供了传递数据的参数,调用方式为: WebBrowser1.Navigate2(URL,Flags, TargetFrameName,PostData,Headers)其中 PostData 参数就是一个提交参数字符串,例如 name=aaa&password=1

14、23 , 但问题是为什么这个方法并不是有效的,服务器端不能取得数据? 如果这个方法是有效的话就不需要用一段 html 代码模拟这种调用了。下面代码能检测出程序 post 出去的消息Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags AsVariant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)MsgBox PostDataEnd Sub13、 W

15、ebBrowser 的方法、属性、事件WebBrowser 的 8 个方法和 13 个属性,以及它们的功能:方法 说明GoBack 相当于 IE 的“后退”按钮,使你在当前历史列表中后退一项GoForward 相当于 IE 的“前进”按钮,使你在当前历史列表中前进一项GoHome 相当于 IE 的“主页”按钮,连接用户默认的主页GoSearch 相当于 IE 的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的 URLRefresh 刷新当前页面Refresh2 同上,只是可以指定刷新级别,所指定的刷新级别的值来自 RefreshConstants 枚 举表,该表定义在 ExD

16、isp.h 中,可以指定的不同值如下:REFRESH_NORMAL 执行简单的刷新,不将 HTTP pragma: no-cache 头发送给服务器 REFRESH_IFEXPIRED 只有在网页过期后才进行简单的刷新REFRESH_CONTINUE 仅作内部使用。在 MSDN 里写着 DO NOT USE! 请勿使用 REFRESH_COMPLETEL Y 将包含 pragma: no-cache 头的请求发送到服务器Stop 相当于 IE 的“停止”按钮,停止当前页面及其内容的载入属性 说明Application 如果该对象有效, 则返回掌管 WebBrowser 控件的应用程序实现的自动

17、化对象 (IDispatch) 。如果在宿主对象中自动化对象无效,这个程序将返回WebBrowser控件的自动化对象Parent 返回 WebBrowser 控件的父自动化对象,通常是一个容器,例如是宿主或 IE 窗口Container 返回 WebBrowser 控件容器的自动化对象。通常该值与 Parent 属性返回的值相 同Document 为活动的文档返回自动化对象。如果 HTML 当前正被显示在 WebBrowser 中, 则Document 属性提供对 DHTML Object Model 的访问途径TopLevelContainer 返回一个 Boolean 值,表明 IE 是否

18、是 WebBrowser 控件顶层容器,是 就返回 trueType 返回已被 WebBrowser 控件加载的对象的类型。例如:如果加载 .doc 文件,就会返 回 Microsoft Word DocumentLeft 返回或设置 WebBrowser 控件窗口的内部左边与容器窗口左边的距离Top 返回或设置 WebBrowser 控件窗口的内部左边与容器窗口顶边的距离Width 返回或设置 WebBrowser 窗口的宽度,以像素为单位Height 返回或设置 WebBrowser 窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着 WebBrowser 当

19、前显示的资源的名称,如果资源 是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称 LocationURL 返回 WebBrowser 当前正在显示的资源的 URL Busy 返回一个 Boolean 值,说明 WebBrowser 当前是否正在加载 URL ,如果返回 true 就可以使用 stop 方法来撤销正在执行的访问操作事件 说明Private Events DescriptionBeforeNavigate2 导航发生前激发,刷新时不激发CommandStateChange 当命令的激活状态改变时激发。它表明何时激活或关闭 Back 和 Forward菜单项或按钮Doc

20、umentComplete 当整个文档完成是激发,刷新页面不激发DownloadBegin 当某项下载操作已经开始后激发,刷新也可激发此事件DownloadComplete 当某项下载操作已经完成后激发,刷新也可激发此事件NavigateComplete2 导航完成后激发,刷新时不激发NewWindow2 在创建新窗口以前激发OnFullScreen 当 FullScreen 属性改变时激发。该事件采用 VARIENT_BOOL 的一个输 入参数来指示 IE 是全屏显示方式 (VARIENT_TRUE) 还是普通显示方式 (VARIENT_FALSE) OnMenuBar 改变 MenuBar

21、 的属性时激发,标示参数是 VARIENT_BOOL 类型的。 VARIANT_TRUE 是可见, VARIANT_ FALSE 是隐藏OnQuit 无论是用户关闭浏览器还是开发者调用 Quit 方法,当 IE 退出时就会激发OnStatusBar 与 OnMenuBar 调用方法相同,标示状态栏是否可见。OnToolBar 调用方法同上,标示工具栏是否可见。OnVisible 控制窗口的可见或隐藏,也使用一个 VARIENT_BOOL 类型的参数StatusTextChange 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是 否有状态栏TitleChange Title 有

22、效或改变时激发14、 本地文件收藏夹操作基本上用 specialfolder(6 ) 就可以得到收藏夹的路径 , 然后你可以用 dir 去循环读入每个目 录,然后 dir 里面的 file, file 的名字就是你要的收藏的名字 , 路径可以自己根据从上面得到的 路径去得到 .如果你不用 dir 也可以用 vb 的 dir 控件 .Private Type SHITEMID cb As Long abID As ByteEnd TypePublic Type ITEMIDLIST mkid As SHITEMID End TypePublic Function SpecialFolder(By

23、Ref CSIDL As Long) As String locate the favorites folderDim R As LongDim sPath As StringDim IDL As ITEMIDLISTConst NOERROR = 0Const MAX_LENGTH = 260R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL) If R = NOERROR ThensPath = Space$(MAX_LENGTH)R = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal s

24、Path)If R ThenSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)End IfEnd IfEnd Function15、 让 Webbrowser 全屏是的 ,webbrowser 本生是一个控件 , 你要它全屏 , 就是要它所在的窗体全屏 ,可以用 setwindowlong 取消窗体的 title,用 Call ShowWindow(FindWindow(Shell_traywnd, ), 0)隐藏 tray, 就是下边那个包含开始那一行.用 Call ShowWindow(FindWindow(Shell_tr

25、aywnd, ), 9) 恢复 . 够详细了吧 .然后在 form1.windowstate = 2 就可以了 .16、 选择网页上的内容Private Sub Command1_Click() 请先选中一些内容Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULTMsgBox Clipboard.GetTextEnd Sub17、 用 IE 来下载文件Private Declare Function DoFileDownload Lib shdocvw.dll (ByVal lpszFile As String) As Lon

26、gPrivate Sub Command1_Click()Dim sDownload As StringsDownload = StrConv(Text1.Text, vbUnicode)Call DoFileDownload(sDownload)End Sub保存 webbrowser 中的 HTML 内容Dim oPF As IPersistFileSet oPF = WebBrowser1.Document oPF.Save TheFileNameHere.htm, FalseWebBrowser1.ExecWB 怎么用下面是我测试的参数WB.ExecWB(4,1)4,1 保存网页4,2

27、 保存网页 (可以重新命名 )6,1 直接打印6,2 直接打印7,1 打印预览7,2 打印预览8,1 选择参数8,2 选择参数10,1 查看页面属性10,2 查看页面属性17,1 全选17,2 全选22,1 重新载入当前页22,2 重新载入当前页18、 Webbrowser 确定窗口对话框某些网页出于各种考虑会弹出对话框要求信息确认,往往会中断我们的 webbrowser 过程, 可以使用如下方法:1.加入 Microsoft Html Object2.加入语句Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, UR

28、L As Variant)Dim obj As HTMLDocumentSet obj = pDisp.Documentobj.parentWindow.execScript function showModalDialog()return; 对 showModalDialog 引起 的对话框进行确定End Sub而 confirm 引发的对话确定框可用 confirm 替换 showModalDialog 即可, Alert 等同理 WebBrowser 取得网页源码 Private Sub Command1_Click()WebBrowser1.Navigate End SubPrivat

29、e Sub WebBrowser1_DownloadComplete()页面下载完毕Dim doc, objhtmlSet doc = WebBrowser1.DocumentSet objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd IfEnd Sub19、取得源码调试正常运行错误 我用 WebBrowser 取得网页源码,直接运行正常,但在编译后出错 提示:实时错误“ 91” Object 变量或 with 块变量没有设置 可能是没有下载完所致,Pri

30、vate Sub WebBrowser1_DownloadComplete()if webbrowser.busy=false thenDim doc, objhtmlSet doc = WebBrowser1.DocumentSet objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd Ifend ifEnd Sub20、页面元素操作1根据标记名(tagname)的和元素名name来找到元素, 2.给元素赋值或是执行相关的事件.例 0: 查看网页元素dim

31、 afor each a in wbr.docume nt.alltext1.text=text1.text & type name(a) & vbcrlfnext例 1: 给 username 文本框内填充内容 :Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim docDim tgSet doc = WebBrowser1.DocumentFor i = 0 To doc.All.length - 1If (LCase(doc.All(i).tagname) = input

32、Thenif (LCase(doc.All(i).name) = username thenSet tg = doc.All(i)tg.value=text1.textend ifEnd IfNext iEnd Sub例 2: 找到提交按钮并点击Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)Dim docDim tgSet doc = WebBrowser1.DocumentFor i = 0 To doc.All.length - 1If (LCase(doc.All(i).tag

33、name) = input Then if (LCase(doc.All(i).type) = submit thenSet tg = doc.All(i)tg.click end if End If Next i End Sub上面在 MSDN2 找到个答案还没试 .IFRAME 内的网页的方法不同 ,可能要用到窗口 .试验后再 说吧.例 3: 难度的INPUT onclick=this.disabled=true;this.value= 登 录 中 , , 请 稍 候 , , ;document.form1.submit(); type=submit value= 登 录 For i =

34、0 To vDoc.All.length - 1 用 i 来判断 submit 为第几个,再点击它例 4: 模拟鼠标点击来点击按钮Private Declare Function GetMessageExtraInfo Lib user32 () As Long Private Declare Sub mouse_event Lib user32 _(ByVal dwFlags As Long, _ByVal dx As Long, _ ByVal dy As Long, _ByVal cButtons As Long, _ ByVal dwExtraInfo As Long)Private

35、Const MOUSEEVENTF_LEFTDOWN As Long = &H2Private Const MOUSEEVENTF_LEFTUP As Long = &H4 sub clk()至于按钮的坐标值就是 x,y ,这个你得自己找了,因为窗口放在不同的位置,坐标是不一样 的,你可以用 getcursorpos 取得,不过,就算你点了,又有什么用呢?点完了还是要验证码的! mouse_event MOUSEEVENTF_LEFTDOWN, x, y, 0, GetMessageExtraInfo mouse_event MOUSEEVENTF_LEFTUP, x, y, 0, GetMe

36、ssageExtraInfo end sub21、网页按钮的终极控制 一般来说 , 最简单最直接的操作网页表单提交方法就是 WebBrowser1.Document.All( Namd).Value= xxxx 填表 WebBrowser1.Document.All( DengLu).Click 按钮点击 不过此方法需要知道该表单的各个元素的 ID. 一般来说 , 普通的网页都能直接 从网页源文件中找到这些东西 .假如整个表单都没能在源文件中找到的,那可以用Text1 = WebBrowser1.Document.getElementById( BiaoID ).innerHTML BiaoI

37、D 为表单所在表格的 ID 这样 Text1 显示出来的就是你所要的表单的代码了 .不过即使是得到隐藏的代码了 ,还是有可能碰到没ID没NAMES类型的按钮,这 怎么办呢 ? 不怕 , 通用方法来了 . 没 ID 我们就给它个 ID 嘛.在DocumentComplete里网页完全打开后 处理网页源码 , 给你要点击的按钮起个名 (加上 ID) 例如 :Text1 = 确定 v/BUTTON 将其变为 :Text1 = 确定 然后用WebBrowser1.Document.body.innerHTML = Text1.Text 将处理完的网页装入 WebBrowser1然后就可以用回一开始说的最简单的方法来点击了WebBrowser1.Document.All( abc ).Click 按钮点击 怎么样 , 是不是很爽丫 , 这样就不用去思考还有没什么条件可以来定位这个按钮 然后再点击了 . 当然 , 还有中方法是 :Dim OButtonOButton = WebB.Document.getElementsByTagName( BUTTON) OButton.Click 这样就点击了前边例子中的那个按钮了 . 这方法通用性也是很强 , 自己研磨一下你就能运用自如了 .22、执行网页中的脚本Function js(scripts)On Error GoTo 1If sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论