台湾“大选”马英九得票破700万自行宣布当选!
当前位置:金诺VB园文章教程网络文章 → 给自己的程序增加网页浏览功能

给自己的程序增加网页浏览功能

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2008-1-29 22:23:31

有很多文章介绍了怎样在自己的程序中加入浏览网页的功能,我也曾经用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_Click

        Case "History"

'            If Button.Value = tbrPressed Then

'                Me.tbToolBar.Buttons("HtmlClass").Value = tbrUnpressed

'                Me.tbToolBar.Buttons("Search").Value = tbrUnpressed

'

'                m_blnIsSplitter = True

'                Me.UCtlHistroy1.Visible = True

'                Me.UCtlClassUrl1.Visible = False

'                Me.UCtlHistroy1.BuildTree (0)

'            Else

'                m_blnIsSplitter = False

'                Me.UCtlHistroy1.Visible = False

'                Me.UCtlClassUrl1.Visible = False

'                Me.UCtlHistroy1.BuildTree (0)

'            End If

'            Call ResizeControls(m_blnIsSplitter, Me.imgSplitter.Left)

'

            Call mnuManHistory_Click

           

        Case "PrintOut"

            brwWebBrowser.SetFocus

            On Error Resume Next

            brwWebBrowser.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT ‘打印

           

           

        Case "Status"

'           m_blnStatusBarShow = CBool(Button.Value)

            Me.tbToolBar.Customize

'            Me.tbToolBar.SaveToolbar

           

        Case "Help"

            Call mnuHelpAbout_Click

       

        Case "Exit"

            Call mnuFileClose_Click

        Case Else

            Exit Sub

    End Select

End Sub