我的程序是一個掛鉤到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之外,並運行它來查看是否可以實例化類。 –