.NET建立COM元件後,要轉型CType成參考物件時,出現錯誤訊息:「0x80004002」

.NET建立COM元件後,要轉型成參考物件時,出現錯誤訊息:「0x80004002」

徵狀:

.NET建立COM元件後,要轉型CType成參考物件時,出以下的錯誤訊息

無法將型別 'System.__ComObject' 的 COM 物件轉換為介面型別 ProgId。
由於發生下列錯誤,介面 (IID 為 '{3B62ACDF-B9A1-4B6F-A596-2DE6E5E62AD8}') 之

COM 元件上的 QueryInterface 呼叫失敗而導致作業失敗:
不支援此種介面 (發生例外狀況於 HRESULT: 0x80004002 (E_NOINTERFACE))。

 

發生原因:

這個是因為建立的COM物件與參考的COM物件介面不同所導致。 有可能是COM重新編譯過,所以CLSID與原先參考的不同。

 

解決方案:

方法 1:

重新參考註冊的COM元件。

方法 2:

不使用Early Binding方式,改用Late Binding建立物件,並且不加以轉型,不再使用CType。如:  object myComObj = CreateObject(ProgId);

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^