我用BHO写了一个IE插件,当IE浏览网页时完成指定功能。
现在我想在IE工具栏添加一个按钮(就是一个开关),控制这个IE插件的运行。当开关打开时,IE插件的功能正常运行;当开关关闭时,IE插件的功能不运行。
在IE插件部分的源码中,我可以设定一个判定值来控制是否执行指定功能。
但我不太清楚怎么和IE工具栏上的那个按钮关联起来?怎么添加这个按钮?当我改变开关状态时,插件里的判定值也会相应改变?
我知道目前一些自定义的IE工具栏按钮,如qq,msn什么的,当点击这些按钮的时候是执行某个程序或连接到某个网址。和我这里说的情况不一样。
怎么实现这个功能啊?
高分求救!!

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView3.asp?id=5230899
      

  2.   

    感谢回复。我看了你的链接,感觉情况有些不同。
    我这里用BHO编写了IE插件,其中有:
    class ATL_NO_VTABLE CIEPLG:
          public CComObjectRootEx<CComSingleThreadModel>,
          public CComCoClass<CIEPlg, &CLSID_IEPlg>,
          public IObjectWithSiteImpl<CIEPlg>,
          public IDispatchImple<IIEPlg, &IID_IIEPlg, &LIBID_BHOTestLib,1,0>这个插件的功能是在CIEPlg::Invoke()中,根据不同的IE事件完成不同功能。现在我的代码是当出现DOCUMENTCOMPLETE事件时(DISPID_DOCUMENTCOMPLETE),我把正在浏览的网页保存下来。
    这样我实现功能的代码主要在Invoke函数中,这样似乎不能通过上述链接提到的用exec执行指定函数的方法将IE工具栏按钮和这个dll关联起来(因为DOCUMENTCOMPLETE事件是IE浏览网页是自动触发的。)
    我现在就是希望我在保存网页时,能有个判断,看IE工具栏按钮的当前状态是开或关,确定是否需要保存该网页。
    望指教!
      

  3.   

    用个mutex控制呀
    接收DOCUMENTCOMPLETE事件时候,判断下