c++ - 在启用特定 BHO 的情况下启动 IE

标签 c++ internet-explorer bho iwebbrowser2

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

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

执行此操作的最佳方法是什么?

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

最佳答案

你的方法很容易出错,我建议不要这样做。相反,您的 BHO 应始终加载 IE,但默认情况下它不应执行任何操作。那么您需要的是一种告诉它“开始过滤”或“开始记录”或其他任何方式的方法。

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

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

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

关于c++ - 在启用特定 BHO 的情况下启动 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815317/

相关文章:

c++ - 使用 boost::function 和 boost::bind 确定仿函数中的对象和方法

internet-explorer - 相当于 Internet Explorer 中 Firebug 的 "Copy XPath"?

internet-explorer - 仅 Windows 7,仅 IE,认为我的网站证书有问题?

internet-explorer - CSS3Pie 边距设置为零

cross-domain - 保护浏览器助手对象

c++ - IUrlHistoryStg::BindToObject 方法有什么作用?

c++ - 更改 C++ 程序入口点。 STL 崩溃

c++ - 如何使用 gdb 查找 g++ 代码中的浮点异常

c++ - 当构造函数抛出异常时,构造函数中分配的内存如何释放?

c# - 在客户环境中调试崩溃的后续步骤