C#中的ActiveX COM:如何将C#事件方法绑定到VBS子

本文关键字:方法 绑定 VBS 事件 ActiveX 中的 COM | 更新日期: 2023-09-27 18:32:54

假设我需要通过C#创建一个activex COM。这样做的原因是需要使用SDK,用C#实现并由3d方供应商提供。我一直在SO中遵循一些很好的例子,使用C#创建ActiveX COM并通过.aspx中的类ID加载它。当有人单击网页上的按钮时,我也成功地调用了新的 COM 方法。

现在的问题是,大多数新的COM方法都使用异步回调函数来等待供应商响应。例如,在新的 COM 方法 hello(( 中,有一个相应的回调函数 onHello((,当 COM dll 收到来自供应商的响应时,它将触发。

我的问题是,如何将 onHello(( 函数调用与我的网页 VBS 子(如 NewCOMID_onHello((绑定,以便我可以在网页上显示一些内容来通知用户。我不想使用忙碌等待来无限检查。

这在C++中可能很简单,因为我们可以尝试通过 .idl 文件等或 BEGIN_CONNECTION_POINT_MAP 等将回调函数与 VBS 映射。但我不确定如何在 .Net/C# 中做到这一点。我尝试使用ComSourceInterfaces,但仍然无法找出当供应商响应触发新的COM方法之一(例如onHello(((时如何触发特定的VBS子。

或者,这甚至可行吗?我知道msft正在放弃Activex而使用Edge,但我们暂时无法摆脱activex。

感谢您的任何提示/帮助!!

不是向我的 COM 对象的 VBScript 用户公开事件处理程序的 dup:1(COM 服务器在 C++ 中,而不是 C#/.net 2( 脚本未在 VBS 中完成

C#中的ActiveX COM:如何将C#事件方法绑定到VBS子

我尝试了很多链接,似乎以下两个将我引向正确的方向:

https://code.msdn.microsoft.com/windowsdesktop/csactivex-c3f43e7dhttp://simpcode.blogspot.com/2013/09/c-com-interop-and-events.html

至少我可以在后端异步调用返回响应时看到一些警报弹出窗口