WebBrowser控件使用详解 | 您所在的位置:网站首页 › shell模拟点击网页按钮是什么 › WebBrowser控件使用详解 |
方法 说明 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 如果要改变状态栏中的文字,这个事件就会被激发,但它并不理会程序是否有状态栏 TitleChangeTitle有效或改变时激发
一些使用技巧 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 Boolean M_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 SHITEMID cb As Long abID As ByteEnd TypePublic Type ITEMIDLIST mkid As SHITEMIDEnd TypePublic Function SpecialFolder(ByRef CSIDL As Long) As String ‘locate the favorites folder Dim R As Long Dim sPath As String Dim IDL As ITEMIDLIST Const NOERROR = 0 Const MAX_LENGTH = 260 R = SHGetSpecialFolderLocation(MDIMain.hwnd, CSIDL, IDL) If R = NOERROR Then sPath = Space(MAXLENGTH)R=SHGetPathFromIDList(ByValIDL.mkid.cb,ByValsPath)IfRThenSpecialFolder=Left(sPath, InStr(sPath, vbNullChar) - 1) End If End 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 Long Private Sub Command1_Click() Dim sDownload As String sDownload = 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”, Form1 With 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), Form1 With 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 10 Load NewWeb(i) NewWeb(i).Top = i * 100 NewWeb(i).Left = i * 100 NewWeb(i).Visible = True Next iEnd SubPrivate Sub DelWeb_Click() For i = 1 To 10 Unload 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.message Dim Outstream As ADODB.Stream On Error GoTo myerr1 Call message.CreateMHTMLBody(“http://www.csdn.net“, CDO.CdoMHTMLFlags.cdoSuppressNone, “”, “”) Set Outstream = message.GetStream Call Outstream.SaveToFile(“c:\test.mht”, ADODB.SaveOptionsEnum.adSaveCreateOverWrite) MsgBox “完成” Exit Submyerr1: Set message = Nothing Set Outstream = NothingEnd Sub======================================================= 8、在WebBrowser控件调用收藏夹和在收藏夹里添加收藏Option ExplicitPrivate Sub Command1_Click() Dim ObjSUH As New ShellUIHelper ObjSUH.AddFavorite “http://www.csdn.net“, “CSDN” 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 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 IfEnd SubPrivate Sub Form_Load() WebBrowser1.Navigate “http://www.applevb.com“End Sub 11、页面滚动: 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 Sub Private Sub Command2_Click() WebBrowser1.GoBackEnd Sub Private Sub Form_Load() WebBrowser1.Navigate “http://www.applevb.com“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 IfEnd Sub上面的command1是前进按钮,command2是后退按钮 |
CopyRight 2018-2019 实验室设备网 版权所有 |