当前位置:首页 > VB

VB BHO

canca17年前 (2009-04-02)VB744

以前一直不知道有BHO这个名字,但一直对IE中的"加载项"编程念念不忘. 前不久一网友让我做一个小程序,功能就是替换网页中指定的内容,但是不启动软件,直接用IE看的话就是原文.感觉有点意思的,因为不知道原理,网上找了一下BHO这个名词自然就落入眼底了.

BHO(浏览器辅助对象)用于IE的加载项中,可以对IE的事件进行拦截编程(可以是IE上的工具条,或者按钮或者不可见插件).BHO的定义位于注册表"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\" 下,当IE启动时就加载了该项下所有子项.通过IObjectWithSite接口同前面的工具条扩展一样可以用来获得浏览器的接口,而IDispatch接口,则被用来监听浏览器的事件。

在VB中IObjectWithSite需要用工具生成然后再VB工程中引用,还要添加MSHTML及SHDOCWV两个库,最后代码如下,替换一个网页中第一个链接的内容

 

 

 Implements IObjectWithSiteTLB.IObjectWithSite
Dim WithEvents m_ie As InternetExplorer
Attribute m_ie.VB_VarHelpID = -1
Dim m_Site As IUnknownVB

Private Sub IObjectWithSite_GetSite(ByVal priid As IObjectWithSiteTLB.GUIDPtr, ppvObj As IObjectWithSiteTLB.VOIDPtr)
    m_Site.QueryInterface priid, ppvObj
End Sub

Private Sub IObjectWithSite_SetSite(ByVal pSite As IObjectWithSiteTLB.IUnknownVB)
    Set m_Site = pSite
    Set m_ie = pSite
End Sub

Private Sub m_ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    On Error Resume Next
   
    'Dim HTMLDoc As MSHTML.HTMLDocument
    If m_ie.LocationURL = URL Then
       
        m_ie.document.links(0).innerHTML = "这里是要替换的内容"
       
       
        MsgBox "替换完成" & URL
   
    End If
   
End Sub

 

这样一个BHO就做了,编译成DLL,然后注册,把注册后的CLSD编号插入到前面说的IE启动时BHO的子项中.新开一个新的窗口,当页面加载完之后这个程序就会替换页面中的指定内容了.

 

      原理弄清楚就很容易了,除了拦截页面的加载事件外还有很多事件可以拦截,从而进行控制,最重要的就是HTMLDocument对象,对整个页面的元素都可以进行读写操作.(比如插入一段小广告什么的,:))

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/332.html

标签: VB
分享给朋友:

“VB BHO” 的相关文章

在VB中实现MD5算法

——————————————————————————————————————Option Explicit Dim w1 As String, w2 As String, w3 As String, w4 As String Function MD5F(ByVal tempstr As String…

VB使用VarType判断数据类型

在VB代码编写过程当中 有时候我们不熟悉一些函数或过程调用之后 返回的数据类型是什么 这个时候可以使用VarType(VarName)这个函数去测试变量的数据类型 返回值是一个整形数值 对应一下列别就可以知道变量的数据类型了 这样就...…

VB读写注册表

Option Explicit Public Enum ERROR    ERROR_SUCCESS = 0&    ERROR_BADDB = 1009&    ERROR_BADKEY =…

VB SendMessage 详解

首先我们了解一下Windows的消息机制。Windows是一个消息驱动式系统,Windows消息提供应用程序与应用程序之间,应用程序与Windows系统之间进行通信的手段。举个例子,打开记事本程序,该程序有一个 “文件“菜单。那么,在运行该…

VB获取WebBroswer里的验证码

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) Dim X, CtrlRange Dim ii As Long ii = 0 For Each X In WebBrowser1.Docum…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。