挂钩进入事件时C#中的COMException

我试图挂钩COM对象上的事件时收到COMexception。 这是我试图执行的代码。

COMClass a = IComClass as ComClass;
a.SomeEvent += new SomeEvent_EventHandler(MethodNameHere);

第二行使用以下信息抛出COMException类型的exception:

System.Runtime.InteropServices.COMException被捕获

消息=“来自HRESULT的exception:0x80040202”

来源= “mscorlib程序”

错误码= -2147220990

StackTrace:at System.Runtime.InteropServices.ComTypes.IConnectionPoint.Advise(Object pUnkSink,Int32&pdwCookie)

有没有人有任何想法,为什么我无法挂钩到COM事件或有一个解决方法来挂钩COM事件?

克里斯

问题是事件的界面没有注册。 一旦我为事件接口添加了注册表项,就解决了这个问题。 我能够使用OLEViewer.exe获取接口ID信息

你得到的错误代码是CONNECT_E_CANNOTCONNECT,谷歌很好。 它表示COM服务器对您尝试订阅事件处理程序感到不满意。 为什么它不是你需要找到的东西。 几乎总是需要从组件作者或供应商那里获得帮助。

您可以尝试的一件事是使用Oleview.exe查看类型库,并查看您尝试订阅的事件是否位于标记为默认源接口的dispinterface上。 如果不是,请尝试将对象强制转换为dispinterface类型,然后订阅其事件。