编写面向 IE7 的 BHO

Coding a BHO targeting IE7

本文关键字:BHO IE7      更新时间:2023-10-16

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

问题:我在IHTMLElement上使用QueryInterface,结果是0x80004002(不支持这样的接口)。

我记得前段时间,关于脚本对象接口(MSHTML)的MSDN文档会指出哪个版本的IE支持每个接口。现在情况已经不同了。IHTMLElement5 文档说"Windows XP with SP2"...我认为这是错误的,但无论如何,现在回答我的问题:

如果我想支持 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 时不能使构建失败?

IE 7 不支持 IHTMLElement5。 它仅在 IE 8 上受支持。 XP 支持 IE 8,因此文档是正确的。

不幸的是,_WIN32_IE不再非常有用;当Windows和IE更紧密地绑定时,它有点用,但实际上任何> _WIN32_IE_60都会公开所有将要暴露的API。