.Net 的 ActiveX 事件

Posted

技术标签:

【中文标题】.Net 的 ActiveX 事件【英文标题】:ActiveX events with .Net 【发布时间】:2015-07-07 11:50:20 【问题描述】:

我在 MSDN 上进行了搜索,但没有找到任何结论。

我想知道是否可以,如果可以,如何从 C++ ActiveX 控件公开事件并从 .Net 代码订阅它。我其实有一个轮询机制,但是我们想用事件驱动的机制来代替它。

如果不是,我打算使用命名管道。

【问题讨论】:

【参考方案1】:

您需要以简单的方式实现 COM 连接点(例如,Visual Studio ATL 项目向导负责大部分步骤)。

ActiveX 控件需要实现连接点,类型库和实现的 IProvideClassInfo 需要表明 coclass 有一个传出接口。类型库还包含事件的调度接口定义。

添加对 ActiveX 控件库的引用时,.NET 互操作会自动导入定义并添加对事件的支持。

见:

Adding an Event (ATL Tutorial, Part 5) Practical ATL: Connection Point and Two Approaches to Receive Events Another ATL Tutorial Using Visual C++ .NET part 2 http://www.369o.com/data/books/atl/0321159624/ch09lev1sec2.html

【讨论】:

以上是关于.Net 的 ActiveX 事件的主要内容,如果未能解决你的问题,请参考以下文章

ActiveX C# 应用程序的问题

尝试处理 ActiveX 事件时出错

将 ActiveX 组件转换为 .NET 组件

如何注入脚本来监听 activeX 事件?

使用 NUnit+Reflection,在我的 ActiveX 控件上找不到任何事件

单击时,如何使使用 C# 编写的 ActiveX 控件在 JavaScript 中引发事件?