我在尝试挂钩COM对象上的事件时收到COM异常。这是我试图执行的代码。
COMClass a = IComClass as ComClass;
a.SomeEvent += new SomeEvent_EventHandler(MethodNameHere);
第二行使用以下信息抛出COMException类型的异常:
发现了System.Runtime.InteropServices.COMException
Message =“HRESULT异常:0x80040202”
源= “mscorlib程序”
错误码= -2147220990
堆栈跟踪: 在System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(Object pUnkSink,Int32& pdwCookie)
有没有人有任何想法,为什么我无法挂钩到COM事件,或者是否有解决COM事件的解决方法?
克里斯
答案 0 :(得分:4)
问题是事件的界面没有注册。一旦我为事件接口添加了注册表项,就解决了这个问题。我能够使用OLEViewer.exe
获取接口ID信息答案 1 :(得分:3)
你得到的错误代码是CONNECT_E_CANNOTCONNECT,谷歌很好。它表示COM服务器对您尝试订阅事件处理程序感到不满意。为什么它不是你需要找到的东西。几乎总是需要从组件作者或供应商那里获得帮助。
您可以尝试的一件事是使用Oleview.exe查看类型库,并查看您尝试订阅的事件是否位于标记为默认源接口的dispinterface上。如果不是,请尝试将对象转换为dispinterface类型,然后订阅其事件。