c++ - 编写针对 IE7 的 BHO

标签 c++ internet-explorer visual-c++ com bho

上下文:经过一些代码修改后,我的 BHO 不再适用于 IE7。

问题:我在 IHTMLElement 上为 IHTMLElement5 使用 QueryInterface,结果为 0x80004002(不支持此类接口(interface))。

我提醒一下,前段时间,MSDN 文档 Scripting Object Interfaces (MSHTML)会指出哪个版本的 IE 支持每个接口(interface)。现在情况已不再如此。 IHTMLElement5 documentation说“带有 SP2 的 Windows XP”...我认为这是错误的,但无论如何,现在回答我的问题:

如果我想支持 IE7 并使用 IHTMLElement5,如何使我的 Visual Studio 2010 C++ 构建失败?

我用google和SO搜索了该主题,发现有一个#define,_WIN32_IE可用于针对最小的特定IE版本。我的问题是它没有改变任何东西,当我将宏设置为 _WIN32_IE_IE70 时,所有编译都很好

我在(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\mshtml.h)中搜索了字符串“_WIN32_IE”,但没有找到匹配项。这是否意味着将宏设置为_WIN32_IE_IE70并在代码中使用IHTMLElement5时不会使构建失败?

最佳答案

IHTMLElement5 isn't supported on IE 7 。仅支持 IE 8。XP 支持 IE 8,因此文档是正确的。

不幸的是,_WIN32_IE 不再那么有用了;当 Windows 和 IE 绑定(bind)更紧密时,它有点用,但实际上任何 > _WIN32_IE_60 都会公开所有将公开的 API。

关于c++ - 编写针对 IE7 的 BHO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19520304/

相关文章:

c++ - ptree 迭代器成员未被自动完成识别?

C++ 如何区分异构集合中的特定对象类型?

javascript - 这些天程序员如何处理 ie6 错误?

JavaScript 按键缓冲区问题

visual-c++ - 阿尔法混合去除图像中的接缝

c++ - 如何在 Visual C++ 中将字节数组转换为十六进制字符串?

c++ - 如何将 ceres::CubicInterpolator 与不在统一网格上的数据一起使用

c++ - 如何使用 C++ 驱动程序重新连接到 MongoDB?

javascript - IE 中比较字符串时出现的预期错误数

c++ - Xcode 推断命名空间?