【问题标题】:Launch IE with specific BHO enabled启动启用特定 BHO 的 IE
【发布时间】:2010-05-12 10:13:14
【问题描述】:

我有一个 IE BHO 插件,我只想在用户从我的程序启动 IE 时启用它(程序使用 CreateProcess() 启动 IE)。

我不希望在用户从我的程序外部启动 IE 时启用此 BHO,因为这意味着 BHO 中的任何问题都可能会扰乱用户的正常浏览体验。

最好的方法是什么?

一种方法是注册 BHO,启动 IE,然后快速注销 BHO。不过,这似乎有点混乱,因为启动 IE 的程序崩溃可能会导致 BHO 保持注册状态。

【问题讨论】:

  • 有趣的是,如果 BHO 依赖于不在路径中的另一个 DLL,IE 将静默卸载 BHO 并静默继续。这是针对 IE7 的,其他版本的 IE 可能会有不同的行为...

标签: c++ internet-explorer bho iwebbrowser2


【解决方案1】:

您的方法很容易出错,我不建议这样做。相反,您的 BHO 应该始终使用 IE 加载,但默认情况下它什么也不做。那么你需要的是一种告诉它“开始过滤”或“开始录制”或其他什么的方法。

您有很多选择。最简单的是环境中某处的标志(信号量,磁盘文件)。你可以有一个特殊的 url,比如 mybho:start 它会监视它。

我已经做过很多次了,它有效。

编辑是的,BHO 将连同它所依赖的任何 DLL 一起加载到内存中(尽管您可以等待并仅在需要时通过 LoadLibrary() 加载它们)。

【讨论】:

  • 类似于等待标志/唯一 URL 的想法,但 BHO 仍将与 BHO 所依赖的任何 dll 一起加载到内存中。
  • 我想我会重构 BHO,以便它尽可能延迟加载并限制加载时完成的静态初始化的数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 2011-03-12
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多