上下文:经过一些代码修改后,我的 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/