'如果你希望新打开的网页出现在同一个窗口,可以这样做Dim WithEvents Web_V1 As SHDocVwCtl.WebBrowser_V1
Private Sub Form_Load()Set Web_V1 = WebBrowser1.ObjectWebBrowser1.Navigate2 "http://zhidao.baidu.com/browse/74"End Sub
Private Sub Web_V1_NewWindow(ByVal URL As String, _ByVal Flags As Long, _ByVal TargetFrameName As String, _PostData As Variant, _ByVal Headers As String, _Processed As Boolean)Processed = TrueWebBrowser1.Navigate URLEnd SubDim WithEvents Web_V1 As SHDocVwCtl.WebBrowser_V1Private Sub Web_V1_NewWindow(ByVal URL As String, _ByVal Flags As Long, _ByVal TargetFrameName As String, _PostData As Variant, _ByVal Headers As String, _Processed As Boolean)'如果你想知道弹出窗口的URL呢,那就Processed = FalseMsgBox URL'如果你想让弹出窗口在原来的窗体里显示呢,就Processed = TrueWebBrowser1.Navigate URLEnd SubPrivate Sub Form_Resize()WebBrowser1.Height = 0.5 * Me.ScaleHeightWebBrowser1.Width = 1 * Me.ScaleWidth'还是用这个'WebBrowser1.Height = Me.ScaleHeight - 500 '这个最小化出错,不推荐,用上面的'要使用这个则要这样'Select Case Me.WindowState'Case 0''MsgBox "标准"'WebBrowser1.Height = Form1.ScaleHeight - 500'WebBrowser1.Width = Form1.ScaleWidth'Case 1''MsgBox "最小化"'WebBrowser1.Height = Form1.ScaleHeight'WebBrowser1.Width = Form1.ScaleWidth'Case 2''MsgBox "最大化"'WebBrowser1.Height = Form1.ScaleHeight - 500'WebBrowser1.Width = Form1.ScaleWidth'End Select'或者'事先把窗体和控件的width和height纪录下来,例如:'WebBrowser1的width=4455,height=2295'Form1的width=4800,height=3600'然后,计算比例WebBrowser1.Width = (4455 / 4800) * Form1.ScaleWidth '或者WebBrowser1.Height = Me.ScaleHeightWebBrowser1.Height = (2295 / 3600) * Form1.ScaleHeight'WebBrowser1.Move Newleft,Newtop,NewWidth,NewHeightWebBrowser1.Top = 0WebBrowser1.Left = 0WebBrowser1.Height = Me.ScaleHeightWebBrowser1.Width = Me.ScaleWidthEnd Sub'用于点击链接在新窗口中打开Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)Dim frmWB As Form2Set frmWB = New Form2frmWB.WebBrowser1.RegisterAsBrowser = TrueSet ppDisp = frmWB.WebBrowser1.ObjectfrmWB.Visible = TrueEnd SubPrivate Sub Command1_Click()WebBrowser1.Document.location.reload (True) '刷新End SubPrivate Sub Form_Load()WebBrowser1.Navigate "www.baidu.com"End Sub'防止出现脚本错误这类问题Private Sub WebBrowser1_DownloadComplete()WebBrowser1.Silent = TrueEnd Sub
Private Sub WebBrowser1_DownloadBegin() '让控件保持安静-忽略错误警告 WebBrowser1.Silent = TrueEnd SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)WebBrowser1.Silent = TrueEnd Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)WebBrowser1.Silent = TrueEnd Sub'检测网页是否已下载完毕Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)If (pDisp Is WebBrowser1.Object) Then MsgBox "网页下载完毕!"End Sub'垂直滚动条到底Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)Dim Doc, kd As Long, gd As LongSet Doc = WebBrowser1.Documentgd = Doc.Body.getAttribute("scrollHeight", 0)kd = Doc.Body.getAttribute("scrollwidth", 0)Doc.ParentWindow.Scroll 0, gdSet Doc = NothingEnd SubDim vDoc, vtag As ObjectSet vDoc = WebBrowser1.Document'文本框取得焦点vDoc.All.Item("message").focus===================================================================================================vb+Webbrowser控件详解1、获得浏览器信息:Private Sub Command1_Click()WebBrowser1.Navigate "http://www.applevb.com"End SubPrivate Sub Command2_Click()Dim oWindowDim oNavSet oWindow = WebBrowser1.Document.parentWindowSet oNav = oWindow.navigatorDebug.Print oNav.userAgentSet oWindow = NothingSet oNav = NothingEnd Sub点击Command1浏览网页,点击Command2在立即窗口中输出浏览器信息。2、弹出Webbrowser消息窗口Dim oWindowSet oWindow = WebBrowser1.Document.parentWindowoWindow.confirm "abcd"VB调用webbrowser技巧集2向Webbrowser中写入HTML内容的几种方法首先在Form_Load中加入WebBrowser1.Navigate "about:blank"确保Webbrowser1可用方法1:Dim s As StringDim stream As IStreams = ""s = s + ""s = s + ""s = s + "hello world"s = 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 "InsertTextArea", False, "xxx"vb调用Webbrowser技巧集31、页面滚动:Private Sub Command2_Click()WebBrowser1.Document.parentwindow.scrollby 0, 30End SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End Sub点击Command2就可以使当前页面向下滚动30像素2、判断页面是否可以前进后退Private Sub Command1_Click()WebBrowser1.GoForwardEnd SubPrivate Sub Command2_Click()WebBrowser1.GoBackEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NAVIGATEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NAVIGATEFORWARD) ThenCommand1.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:Private 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 objSelection = NothingEnd IfEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End SubNavigate 方 法 的 语 法 格 式 为: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 StringDim strData As StringstrURL = Trim$(txtURL.Text)strFormData = "name=" & Trim$(txtName.Text) &"&password=" & Trim$(txtPassword.Text)Call WBTest.Navigate2(strURL, 64, "_blank", strFormData,"hello")End Subasp源码:<%@ Language=VBScript %><%dim strNamedim strPasswordstrName=Trim(Request.Form("name"))strPassword=Trim(Request.Form("password"))Response.Write(strName)Response.Write(strPassword)if strName="KingZhang" and strPassword="123456" thenResponse.Write("登陆成功")elseResponse.Write("非法登陆用户!")end if%>*********************************************************************Option ExplicitPrivate Sub Command1_Click()Dim szValue As StringWebBrowser1.Document.body.innerHTML = "method=post action=http://地址/xxx.php>"WebBrowser1.Document.Forms("post").submitEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate2 "about:blank"End SubTop********************************************************************请问:在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 PostDataEnd SubWebBrowser的8个方法和13个属性WebBrowser的8个方法和13个属性,以及它们的功能:方法 说明GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项GoHome 相当于IE的“主页”按钮,连接用户默认的主页GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的URLRefresh 刷新当前页面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控件顶层容器,是就返回trueType 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word DocumentLeft 返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离Top 返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离Width 返回或设置WebBrowser窗口的宽度,以像素为单位Height 返回或设置WebBrowser窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称LocationURL 返回WebBrowser当前正在显示的资源的URLBusy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作如何利用 WebBrowser 控件,显示 .GIF 动画?要有一定的网页知识(HTML、JavaScript、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(CommonDialog1.FileName))Set p = VB.LoadPicture(sPath)WebBrowser1.Width = p.Width * 16 / 26WebBrowser1.Height = p.Height * 16 / 26' WebBrowser1.Navigate "about:blank"WebBrowser1.Document.openWebBrowser1.Document.writeln ""WebBrowser1.Document.writeln ""WebBrowser1.Document.writeln ""WebBrowser1.Document.writeln ""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 = "&Open"WebBrowser1.Navigate "about:blank"WebBrowser1.Document.openWebBrowser1.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的“前进”按钮,使你在当前历史列表中前进一项GoHome 相当于IE的“主页”按钮,连接用户默认的主页GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的URLRefresh 刷新当前页面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控件顶层容器,是就返回trueType 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word DocumentLeft 返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离Top 返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离Width 返回或设置WebBrowser窗口的宽度,以像素为单位Height 返回或设置WebBrowser窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称LocationURL 返回WebBrowser当前正在显示的资源的URLBusy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作WebBrowser 的事件Private Events DescriptionBeforeNavigate2 导航发生前激发,刷新时不激发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 LibraryRem #窗体代码#Dim WithEvents M_Dom As MSHTML.HTMLDocumentPrivate Function M_Dom_oncontextmenu() As BooleanM_Dom_oncontextmenu = FalseEnd FunctionPrivate Sub Webbrowser1_DownloadComplete()Set M_Dom = Webbrowser1.DocumentEnd SubRem 好了,右键菜单没有了=======================================================================控件调用和获得收藏夹里面基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字就是你要的收藏的名字, 路径可以自己根据从上面得到的路径去得到.如果你不用dir也可以用vb的dir控件.Private Type SHITEMIDcb As LongabID As ByteEnd TypePublic Type ITEMIDLISTmkid As SHITEMIDEnd TypePublic Function SpecialFolder(ByRef CSIDL As Long) As Stringlocate 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 sPath)If R ThenSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)End IfEnd IfEnd 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_DODEFAULTMsgBox Clipboard.GetTextEnd Sub=============================================================用IE来下载文件Private Declare Function DoFileDownload Lib shdocvw.dll (ByVal lpszFile As String) As LongPrivate Sub Command1_Click()Dim sDownload As StringsDownload = StrConv(Text1.Text, vbUnicode)Call DoFileDownload(sDownload)End Sub保存webbrowser中的HTML内容Dim oPF As IPersistFileSet oPF = WebBrowser1.DocumentoPF.Save "TheFileNameHere.htm", FalseWebBrowser1.ExecWB怎么用下面是我测试的参数WB.ExecWB(4,1)4,1 保存网页4,2 保存网页(可以重新命名)6,1 直接打印6,2 直接打印7,1 打印预览7,2 打印预览8,1 选择参数8,2 选择参数10,1 查看页面属性10,2 查看页面属性17,1 全选17,2 全选22,1 重新载入当前页22,2 重新载入当前页webbrowser确定对话框的正确方法webbrowser确定窗口对话框某些网页出于各种考虑会弹出对话框要求信息确认,往往会中断我们的webbrowser过程,可以使用如下方法:1.加入Microsoft Html Object2.加入语句Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL 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 "http://www.sdqx.gov.cn/sdcity.php"End SubPrivate Sub WebBrowser1_DownloadComplete()'页面下载完毕Dim doc, objhtmlSet doc = WebBrowser1.DocumentSet objhtml = doc.body.createtextrange()If Not IsNull(objhtml) ThenText1.Text = objhtml.htmltextEnd IfEnd Sub我用WebBrowser取得网页源码,直接运行正常,但在编译后出错提示:实时错误“91” Object 变量或 with 块变量没有设置可能是没有下载完所致,Private 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 Sub===========================================================================方法 说明GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项GoHome 相当于IE的“主页”按钮,连接用户默认的主页GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面Navigate 连接到指定的URLRefresh 刷新当前页面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控件顶层容器,是就返回trueType 返回已被WebBrowser控件加载的对象的类型。例如:如果加载.doc文件,就会返回Microsoft Word DocumentLeft 返回或设置WebBrowser控件窗口的内部左边与容器窗口左边的距离Top 返回或设置WebBrowser控件窗口的内部左边与容器窗口顶边的距离Width 返回或设置WebBrowser窗口的宽度,以像素为单位Height 返回或设置WebBrowser窗口的高度,以像素为单位LocationName 返回一个字符串,该字符串包含着WebBrowser当前显示的资源的名称,如果资源是网页就是网页的标题;如果是文件或文件夹,就是文件或文件夹的名称LocationURL 返回WebBrowser当前正在显示的资源的URLBusy 返回一个Boolean值,说明WebBrowser当前是否正在加载URL,如果返回true就可以使用stop方法来撤销正在执行的访问操作WebBrowser 的事件Private Events DescriptionBeforeNavigate2 导航发生前激发,刷新时不激发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有效或改变时激发一些使用技巧1.禁止右键看到很多关于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 BooleanM_Dom_oncontextmenu = FalseEnd FunctionPrivate Sub Webbrowser1_DownloadComplete()Set M_Dom = Webbrowser1.DocumentEnd SubRem 好了,右键菜单没有了=========================================================================2、控件调用和获得收藏夹里面基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字就是你要的收藏的名字, 路径可以自己根据从上面得到的路径去得到.如果你不用dir也可以用vb的dir控件.Private Type SHITEMIDcb As LongabID As ByteEnd TypePublic Type ITEMIDLISTmkid As SHITEMIDEnd TypePublic Function SpecialFolder(ByRef 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 sPath)If R ThenSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1)End IfEnd IfEnd Function=============================================================3、全屏是的,webbrowser本生是一个控件, 你要它全屏,就是要它所在的窗体全屏, 可以用setwindowlong取消窗体的 title, 用Call ShowWindow(FindWindow("Shell_traywnd", ""), 0) 隐藏tray,就是下边那个包含开始那一行. 用Call ShowWindow(FindWindow("Shell_traywnd", ""), 9) 恢复. 够详细了吧.然后在form1.windowstate = 2 就可以了.================================================================================4、选择网页上的内容。Private Sub Command1_Click()'请先选中一些内容Me.WebBrowser1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULTMsgBox Clipboard.GetTextEnd Sub==========================================================================5、用IE来下载文件Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As LongPrivate Sub Command1_Click()Dim sDownload As StringsDownload = StrConv(Text1.Text, vbUnicode)Call DoFileDownload(sDownload)End SubPrivate Sub Form_Load()Text1.Text = "http://www.chat.ru/~softdaily/fo-ag162.zip"Form1.Caption = "Audiograbber 1.62 Full"Text2.Text = "http://www6.50megs.com/audiograbber/demos/cr-ag161.zip"End Sub=======================================================================6、我要动态加载和删除WebBrowser控件应该怎么做?Private Sub Command1_Click()Form1.Controls.Add "shell.explorer.2", "NewWeb", Form1With Form1!NewWeb.Visible = True.Width = 10000.Height = 10000.Left = 0.Top = 0.Navigate2 "www.csdn.net"End WithEnd SubPrivate Sub Command2_Click()Controls.Remove Form1!newwebEnd SubForm1.Controls.Add "shell.explorer.2", newweb(newweb.Count), Form1With Form1!newweb(newweb.Count).Visible = True.Width = 1000.Height = 1000.Left = newweb(newweb.Count - 1).Left + newweb(newweb.Count - 1).Width.Top = 0'.Navigate2 "www.csdn.net"End With为什么他说我Form1.Controls.Add "shell.explorer.2", newweb(newweb.Count), Form1这一行错误13 类型不匹配?ps:我在form中已经有了一个newweb(0)控件先为一个WebBrowserDim i As IntegerPrivate Sub AddWeb_Click()For i = 1 To 10Load NewWeb(i)NewWeb(i).Top = i * 100NewWeb(i).Left = i * 100NewWeb(i).Visible = TrueNext iEnd SubPrivate Sub DelWeb_Click()For i = 1 To 10Unload NewWeb(i)Next iEnd Sub=======================================================7、一个把页面保存为MHT(即MHTML)文件将 pcwak(书剑狂生[MS MVP]) 大侠提供的资料贴出来,以供大家参考:我终于找到一个把页面保存为MHT(即MHTML)文件的方法了!首先,在工程中必须要引用一个库:Library CDOD:/WINNT/System32/cdosys.dllMicrosoft CDO for Windows 2000 Library其次,需要Stream对应的接口的支持,如果你一时找不到就使用支持这个的较新的ADO就行了,如Library ADODBD:/Program Files/Common Files/system/ado/msado15.dllMicrosoft ActiveX Data Objects 2.5 Library代码如下,十分简单(同时由于流的特点,显示在实际应用中没必要象本例中那样把文件保存到磁盘上就可直接转换为字符串或字节数组什么的处理的。另,对于Microsoft CDO for Windows 2000 Library这个库,在WIN98中要怎么使用还没试过,感兴趣的朋友可以试试并跟帖,以丰富完善其内容:)Private Sub Command1_Click()' Reference to Microsoft ActiveX Data Objects 2.5 Library' Reference to Microsoft CDO for Windows 2000 LibraryDim iMsg As New CDO.MessageDim iConf As New CDO.ConfigurationDim objStream As ADODB.StreamWith iMsg.CreateMHTMLBody "http://www.163.com/";, , _"domain/username", _"password"Set objStream = .GetStreamCall objStream.SaveToFile("f:/test.mht", adSaveCreateOverWrite)End WithEnd Sub2、'首先加入对ADODB和CDO(Microsoft CDO for Windows 2000 Library,对应文件名为CDOSYS.dll)的引用Private Sub Command1_Click()Dim message As New CDO.messageDim Outstream As ADODB.StreamOn Error GoTo myerr1Call message.CreateMHTMLBody("http://www.csdn.net", CDO.CdoMHTMLFlags.cdoSuppressNone, "", "")Set Outstream = message.GetStreamCall Outstream.SaveToFile("c:/test.mht", ADODB.SaveOptionsEnum.adSaveCreateOverWrite)MsgBox "完成"
Exit Submyerr1:Set message = NothingSet Outstream = NothingEnd Sub=======================================================8、在WebBrowser控件调用收藏夹和在收藏夹里添加收藏Option ExplicitPrivate Sub Command1_Click()Dim ObjSUH As New ShellUIHelperObjSUH.AddFavorite "http://www.csdn.net", ""Set ObjSUH = NothingEnd Sub=========================================================9、如何使网页不出现滚动条:Private Sub mnuScroll1_Click()'注意:必须在网页完全显示之后才可以运行WebBrowser1.Document.body.Scroll = "no" '不显示滚动条的办法End SubPrivate Sub mnuScroll2_Click()'注意:必须在网页完全显示之后才可以运行WebBrowser1.Document.body.Scroll = "Auto" '显示滚动条的办法End Sub==============================================================10、如何获得网页中被选中部分的HTML:Private Sub Command1_Click()Dim objSelectionDim objTxtRange
Set objSelection = WebBrowser1.Document.selectionIf Not (objSelection Is Nothing) ThenSet objTxtRange = objSelection.createRangeIf Not (objTxtRange Is Nothing) ThenDebug.Print objTxtRange.htmlText
Set objTxtRange = NothingEnd IfSet objSelection = NothingEnd IfEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End Sub11、页面滚动:Private Sub Command2_Click()WebBrowser1.Document.parentwindow.scrollby 0, 30End SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End Sub点击Command2就可以使当前页面向下滚动30像素12、判断页面是否可以前进后退Private Sub Command1_Click()WebBrowser1.GoForwardEnd SubPrivate Sub Command2_Click()WebBrowser1.GoBackEnd SubPrivate Sub Form_Load()WebBrowser1.Navigate "http://www.applevb.com"End SubPrivate Sub WebBrowser1_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)If (Command = CSC_NAVIGATEBACK) ThenCommand2.Enabled = EnableEnd IfIf (Command = CSC_NAVIGATEFORWARD) ThenCommand1.Enabled = EnableEnd IfEnd Sub上面的command1是前进按钮,command2是后退按钮。