给自己的程序增加网页浏览功能
有很多文章介绍了怎样在自己的程序中加入浏览网页的功能,我也曾经用VB制作自己的浏览器。大多是利用了SHDOCVW.DLL中的WEBBROWSER控件和INTERNET EXPLORER AUTOMATION。Shdocvw.DLL提供了COM接口,使得程序员可以在自己的程序中使用WEBBROWSER控件和INTERNET EXPLORER AUTOMATION。它还提供了系列的INTERNET API函数,给我们控制INTERNET EXPLORER。
如果大家想了解SHDOCVW.DLL提供了些什么给我们,可以用《高级VISUAL BASIC编程》(中国电力出版社)中TYPE LIBRARY EDITOR工具浏览SHDOCVW.DLL中的内幕。还可以用Exescope这个资源编辑工具看看SHDOCVW.DLL中有什么函数。
IE基本架构(摘自《程序员》专刊)
IEXPLORER.EXE
SHDOCVW.DLL–WEBBROWSER CONTROL AND INTERNET EXPLORER AUTOMATION页面显示
MSHTML.DLL – MSHTML,处理页面的语法分析,又是一个COM服务器,把HTML中的页面元素定义成对象,给客户端访问
HTML
ACTIVEX CONTROL
ACTIVEX SCRIPT ENGINE
JAVA APPLET
PLUG IN
在MSDN中有详细的帮助介绍WEBBROWSER控件和INTERNET EXPLORER AUTOMATION。它们的属性、方法和事件大部分相同,有部分属性和方法WEBBROWSER控件会忽略掉。SHDOCVW.DLL提供一个手段给我们把网页浏览功能加入到我们的程序中,或控制一个INTERNET EXPLORER实例。以下是一些我在应用中使用到的技巧,我以代码加说明的形式给出大家参考。
一、 工具栏
brwWebBrowser是一个WEBBROWSER控件的实例,CommandStateChange事件可以实现工具栏中的前进和后退的是否有效。
Private Sub brwWebBrowser_CommandStateChange(ByVal Command As Long, ByVal Enable As Boolean)
Select Case Command
Case CSC_UPDATECOMMANDS
'''' Me.tbToolBar.Buttons(1).Enabled = Enable
'''' Me.tbToolBar.Buttons(2).Enabled = Enable
Case CSC_NAVIGATEFORWARD
‘工具栏的前进按扭的有效状态改变
Me.tbToolBar.Buttons(2).Enabled = Enable
‘工具栏的后退按扭的有效状态改变
Case CSC_NAVIGATEBACK
Me.tbToolBar.Buttons(1).Enabled = Enable
Case Else
End Select
End Sub
利用WEBBROWSER的方法进行导航
Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
On Error Resume Next
Select Case Button.Key
Case "Back"
brwWebBrowser.GoBack ‘后退
Case "Forward"
brwWebBrowser.GoForward ‘前进
Case "Refresh"
brwWebBrowser.Refresh ‘刷新
Case "Home"
brwWebBrowser.GoHome ‘到主页
Case "Search"
Me.tbToolBar.Buttons("HtmlClass").Value = tbrUnpressed
Me.tbToolBar.Buttons("History").Value = tbrUnpressed
If Button.Value = tbrPressed Then
Me.brwSearch.Visible = True
Me.brwSearch.GoSearch
m_blnIsSplitter = True
Else
Me.brwSearch.Visible = False
Me.brwSearch.GoSearch
m_blnIsSplitter = False
End If
Me.UCtlHistroy1.Visible = False
Me.UCtlClassUrl1.Visible = False
Call ResizeControls(m_blnIsSplitter, Me.imgSplitter.Left)
Case "Stop"
brwWebBrowser.Stop
Me.Caption = brwWebBrowser.LocationName & " - " & strCurrentUserName
Case "HtmlClass"
'''' If Button.Value = tbrPressed Then
'''' Me.tbToolBar.Buttons("History").Value = tbrUnpressed
'''' Me.tbToolBar.Buttons("Search").Value = tbrUnpressed
''''
'''' m_blnIsSplitter = True
'''' Me.UCtlClassUrl1.Visible = True
'''' Me.UCtlHistroy1.Visible = False
''''
'''' Me.UCtlClassUrl1.BuildTree (Normal)
''''
'''' Else
'''' m_blnIsSplitter = False
'''' Me.UCtlClassUrl1.Visible = False
'''' Me.UCtlHistroy1.Visible = False
'''' End If
'''' Call ResizeControls(m_blnIsSplitter, Me.imgSplitter.Left)
Call mnuManClass_Cli [1] [2] [3] 下一页 没有相关教程
|