当前位置:首页 > VB

VB BHO

canca17年前 (2009-04-02)VB745

以前一直不知道有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” 的相关文章

我的网友第一个bho作品

转自:http://hi.baidu.com/zzjwl/blog/item/60ecf8de3bf4bf5c95ee3725.html 去年用vb做bho,没有成功,最近偶然到网络搜索,有那么多资料。边看边做,终于ok! Implements IObjectWithSiteTLB.IObjectW…

VB IE控制

VERSION 5.00Begin VB.UserControl uctlIe    ClientHeight    =   450   ClientLeft    &n…

VB使用VarType判断数据类型

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

VB SendMessage 详解

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

VB触发网页onmousedown事件

  Dim vDoc As IHTMLDocument2             Set vDoc = WebBrowser1.Document   …

发表评论

访客

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