2

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

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

我提醒说,前段时间,关于脚本对象接口 (MSHTML)的 MSDN 文档会指出哪个版本的 IE 支持每个接口。情况不再如此。IHTMLElement5文档说“带有 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 时不能使构建失败?

4

1 回答 1

2

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

不幸的是,_WIN32_IE 不再那么有用了。当 Windows 和 IE 更紧密地绑定时,它有些用处,但实际上任何 > _WIN32_IE_60 都会暴露所有将暴露的 API。

于 2013-10-22T19:40:01.327 回答