当前位置:首页 > VB > 正文内容

VB BHO

canca17年前 (2009-04-02)VB560

以前一直不知道有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弄的圣诞小礼物。呵呵...一时兴致到了... 下载:http://exs.mail.qq.com/cgi-bin/downloadfilepart?svrid=16&fid=2535de5c7dc3a850b2ad4e367a1c9e48ec2d9e8b55d811c1&f...

就类似于3721的插件一样,当用户浏览我的网站的时候,提示下载运行插件

实现方法如下: 首先需要获得IObjectWithSite接口的定义,你下载个olelib.tlb,包含了接口定义。然后创建一个ActiveX DLL工程, 在工程中引用这个tlb文件,并且引用Microsoft HTML Object Library(M...

Browser Helper Objects

一、简介   有时,你可能需要一个定制版本的浏览器。在这种情况下,你可以自由地把一些新颖但又不标准的特征增加到一个浏览器上。结果,你最终有的只是一个新但不标准的浏览器。Web浏览器控件只是浏览器的分析引擎。这意味着仍然存在若干的与用户接口相关的工作等待你做――增加一个地址栏,工具栏,历史记录,状态栏...

VB使用VarType判断数据类型

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

VB 控制QQ发消息

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''  程序功能:       向QQ2009聊天窗口中发送文本,并发送消息...

发表评论

访客

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