打印本文 打印本文 关闭窗口 关闭窗口
给自己的程序增加网页浏览功能
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1662  更新时间:2009/4/23 16:39:44  文章录入:mintao  责任编辑:mintao
 

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

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

打印本文 打印本文 关闭窗口 关闭窗口