zoukankan      html  css  js  c++  java
  • 浏览器插件 Browser Helper Object(BHO) 二

     

    IE是如何启动一个BHO对象的呢?

    每次,当有新的IE实例启动时,IE浏览器都会去检查注册表中的项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects

    如果IE在注册表中找到了这些键,IE就会去寻找在这个键下面列出来的CLSID,如图所示

        这些被列在Browser Helper Objects 下面的键告诉IE浏览器哪些BHO是需要被载入的。你可以通过编辑注册表手动为你的BHO创建一个CLSID的键,否则你需要为你的BHO创建一些实现注册功能的代码,来插入这些键值。

        在Browser Helper Object键下面列出的每一个CLSID,IE都会在相同的进程空间比如浏览器中,调用CoCreateInstance 来启动一个新的BHO实例。换句话说,IE把BHO作为一个进程中的服务启动了。如果这个BHO已经注册了自己的CLSID并且实现了IObjectwithSite接口,那么这个被IE启动的BHO就把传递了一个指针给IE浏览器的IWebBrowser2接口。通过这个接口,BHO可以控制并收到来自IE浏览器的事件。

        只要BHO被正确的创建了,那么每当新的IE的实例被启动的时候,他就会被IE加载。因此如果你安装了Microsoft Active Desktop,那么每次当你打开一个文件夹,一个子文件夹、或者一个浏览器窗口时,BHO都会被加载。如果你不再想要BHO被加载,你必须删除跟这个BHO相关联的注册表项。另外,你可以手动的编辑注册表项来删除它,也可以在你的BHO中写一些卸载的代码来为你做这些工作。

  • 相关阅读:
    【0003】与随机数有关的一些问题
    【0001】排序法与查找方式
    【0002】斐波那契数列,迷宫,汉诺塔
    【0001】C程序的编译过程
    django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')
    django 删除数据库表后重新同步的方法
    Django链接mysql数据库报错1064
    sql练习题
    jmeter连接数据库
    购物车程序练习
  • 原文地址:https://www.cnblogs.com/bingxuefly/p/Bho.html
Copyright © 2011-2022 走看看