2013-10-22 18 views
2

上下文:經過一些代碼修改後,我的BHO不再適用於IE7。針對IE7編寫一個BHO

問題:我在IHTMLElement5的IHTMLElement上使用QueryInterface,結果是0x80004002(沒有這樣的接口支持)。

前段時間,關於Scripting Object Interfaces (MSHTML)的MSDN文檔會指出哪個版本的IE支持每個接口。情況並非如此。該IHTMLElement5 documentation說「的Windows XP SP2」 ......我認爲這是錯誤的,但無論如何,現在我的問題:

如何使我的Visual Studio 2010的C++編譯失敗,如果我想支持IE7和使用IHTMLElement5 ?

我用google和SO搜索了主題,發現有一個#define,_WIN32_IE可以用來定位一個最小的特定IE版本。我在搜索(在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7中的字符串'_WIN32_IE'中搜索字符串'_WIN32_IE'時, .0A \ Include \ mshtml.h)並找不到匹配項。這是否意味着在將宏設置爲_WIN32_IE_IE70並在代碼中使用IHTMLElement5時不能使構建失敗?

回答

2

IHTMLElement5 isn't supported on IE 7。它僅在IE 8上受支持。IE 8在XP上受支持,因此文檔是正確的。

不幸的是,_WIN32_IE不再有用了,當Windows和IE更緊密地綁定時,它有點用處,但實際上> _WIN32_IE_60將會公開將暴露的所有API。

+1

當文件剛剛提到操作系統版本時,該文件是真實的誤導。我有一個客戶(無論什麼原因)在VISTA上使用IE7 ...前段時間,文檔會說「自IE8以來,blabla」 – manuell