- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序是一个挂接到正在运行的 IE 实例的 dll。多年来一直运行良好。
最近我将它除尘并运行它,但下面的最后一行失败并显示 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。
最佳答案
这将非常难以诊断。 ShellWindows coclass 比较特殊,其 CLSID 注册表项为 HKEY_CLASSES_ROOT\CLSID\{9BA05972-F6A8-11CF-A442-00A0C90A8F39}
。当你看那里时,你会发现那里没有注册任何有用的东西。背景故事是,这是使 Windows 外壳类似于 Web 浏览器的不幸尝试的遗留问题。今天仍然可见,枚举 shell 窗口返回 Windows Explorer 和 Internet Explorer 实例。
SysInternals 的 ProcMon 实用程序几乎总是调试 0x80040154 错误的首选武器,但它在这里表现平平。您可以看到它正在探测注册表,但没有找到它要查找的内容,但是程序无论如何都知道如何加载 ieframe.dll。这只能通过操作系统拦截 CoCreateInstance() 调用来工作。考虑到 coclass 枚举 shell 窗口,这通常是有道理的。
剩下的就是试错法了。先重装IE,再重装操作系统。或者在机器占用您太多宝贵时间之前将机器推出 4 层楼的 window 。
关于c++ - SHDocVw::IShellWindowsPtr 在 IE8 下失败? (错误 0x80040154),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13468784/
我的程序是一个挂接到正在运行的 IE 实例的 dll。多年来一直运行良好。 最近我将它除尘并运行它,但下面的最后一行失败并显示 hr = 0x80040154: #import rename
我是一名优秀的程序员,十分优秀!