我有一个IE BHO插件,我只想在用户从我的程序启动IE时启用(该程序使用CreateProcess()
启动IE)。启用特定的BHO启用IE浏览器
我不希望在用户从我的程序外部启动IE时启用此BHO,因为这意味着BHO中的任何问题都可能会破坏用户的正常浏览体验。
这样做的最好方法是什么?
一种方法是注册BHO,启动IE,然后快速注销BHO。尽管这看起来有点乱,因为启动IE的程序崩溃可能导致BHO保持注册状态。
我有一个IE BHO插件,我只想在用户从我的程序启动IE时启用(该程序使用CreateProcess()
启动IE)。启用特定的BHO启用IE浏览器
我不希望在用户从我的程序外部启动IE时启用此BHO,因为这意味着BHO中的任何问题都可能会破坏用户的正常浏览体验。
这样做的最好方法是什么?
一种方法是注册BHO,启动IE,然后快速注销BHO。尽管这看起来有点乱,因为启动IE的程序崩溃可能导致BHO保持注册状态。
你的方法很容易出错,我建议不要这样做。相反,你的BHO应该总是加载IE,但默认情况下它不应该做任何事情。那么你需要的是告诉它“开始过滤”或“开始录制”或其他任何方式。
你有很多选择。最简单的是环境中的某个标志(一个信号量,一个磁盘文件)。您可以拥有一个特殊的网址,例如mybho:start
。
我已经做了这么多次,它的工作原理。
编辑是的,BHO将被加载到内存中,以及它依赖的任何DLL(尽管您只能在需要时通过LoadLibrary()
加载它们)。
有趣的是,如果BHO依赖于另一个不在路径中的DLL,IE将默默卸载BHO并默默继续。这是IE7,IE的其他版本可能会有不同的行为... – watsonmw 2010-05-12 16:41:25