我的程序是一个挂钩到IE的运行实例的DLL。多年来它工作得很好。SHDocVw :: IShellWindowsPtr与IE8失败? (错误0x80040154)
最近我撒其关闭,并运行它,但低于最后一行失败,hr = 0x80040154
:
#import <mshtml.tlb> rename("value", "theValue") rename("event", "theEvent")
#import <shdocvw.dll>
// ....
SHDocVw::IShellWindowsPtr spSHWinds;
HRESULT hr = m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
难道不管是IE7已经换成IE8?我应该在哪里看?
我正在使用VS2008,如果有问题。
编辑补充
我没有看到,这可能是一个32/64位的问题 - 它运行得很好,去年这个同一台机器上。这已经改变(据我已经注意到)是IE浏览器的版本,从7到8
注意的赏金猎人的唯一的事:
我只能访问这个系统几(美国东部时间0:00左右),所以你可能得不到你的建议的快速回应,但我将看着他们。
如果您认为有些事情我应该检查(例如注册表值),请具体说明。
编辑补充:
我现在看到第一一次我打电话的CreateInstance,它返回0x80070002,0x80040154的不是。
0x80040154是'班级未注册'。也许是一个32/64位的问题? –
您有'0x80040154'' REGDB_E_CLASSNOTREG'“类未注册”错误。最有可能的是你没有安装这个组件。至少,这是首先要检查的内容:如果你有任何这个'CLSID'的条目,并且它们指向一个健康的DLL,请查看注册表。 –
然后接下来的事情 - 如果DLL看起来很好 - 是创建一个空的项目,例如控制台C++应用程序,它只是简单地执行'CoInitialize'和'CoCreateInstance',即在IE之外,并运行它来查看是否可以实例化类。 –