我通过加载类型库(TLB)并使用ITypeLibITypeInfo遍历类型来获取COM函数的地址。
调用ITypeInfo的AddressOfMember函数后,我面临以下异常:


  System.Runtime.InteropServices.COMException(0x800288BD):操作的模块种类错误。 (来自HRESULT的异常:0x800288BD(TYPE_E_BADMODULEKIND))位于System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember(Int32 memid,INVOKEKIND invKind,IntPtr&ppv)。


我如何摆脱这种例外?

最佳答案

我不确定,以前没有做过这类事情,但是您说您正在加载tlb文件?可能是因为addressofmember您需要加载包含com对象的dll,我认为tlb文件只是接口的描述,因此addressofmember将没有任何代码要加载。

关于c# - 为什么在获取COM函数的地址时发生异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2825074/

10-10 23:26