将 activeX 对象投射到我的对象上的问题

Posted

技术标签:

【中文标题】将 activeX 对象投射到我的对象上的问题【英文标题】:Problem with casting activeX object onto my object 【发布时间】:2010-11-25 12:51:18 【问题描述】:

我正在尝试使用 Windows From 作为 SAP B1 中的 ActiveX 控件。在该控件中,我托管 WPF 控件。它工作得很好,除非我尝试将 activeX 对象投射到我的类上,这样我就可以使用我的类上的所有方法。但是当我尝试这样做时,我得到了一个例外。怎么了?

我做了注册和所有这些事情。我什至可以使用一些手工制作的数据(在控件构造函数中初始化)在 SAP 中显示该控件。虽然我不确定这是否是更普遍的问题,而不是特定于 SAP 的问题。

欢迎任何建议并提前致谢。

我收到的信息是: 无法将类型为“System.__ComObject”的 COM 对象转换为类类型“CapacityCalendarControl.CapacityCalendar”

[Guid("9A2F1CCB-8DC0-4CE5-B3C7-403A1A8CDCE2")]
[ProgId("kamil.calendar.control")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public partial class CapacityCalendar : UserControl

  //internals...

【问题讨论】:

你没有发布被炸的代码。 【参考方案1】:

无法将 System.__ComObject(COM 包装器)强制转换为 .NET 类。如果您的 activeX 配备了 .TLB(外部或嵌入式),我认为最简单的方法是使用 TLBImport(类型库导入工具)。

更多信息请看这里:Tool for creating .NET wrappers for a COM DLL?

【讨论】:

但是我从网络组装中制作了我的activeX,我无法将它转换回网络组装,至少这是我从 Tlbimp 得到的。 TlbImp 将创建 .NET 类以使用非 .NET COM 对象 (=Active X)。我不明白“我从网络组装制作了我的 ActivX”声明?

以上是关于将 activeX 对象投射到我的对象上的问题的主要内容,如果未能解决你的问题,请参考以下文章

将特定对象投射到另一个对象

将 Firebase 快照投射到 Swift 3 对象

如何将 ActiveX 控件挂钩到事件/更改到我的视图模型中?

APIM 策略 - 无法投射对象

在数据表VBA Excel2010 ActiveX中插入新行

如何投射列表视图对象