【问题标题】:Javascript receives ActiveX event only onceJavascript 只接收一次 ActiveX 事件
【发布时间】:2010-12-09 22:17:23
【问题描述】:

我使用 ATL 编写了一个 ActiveX 控件。我使用向导添加了对添加了public IConnectionPointContainerImpl<CActiveX>CProxy_IActiveXEvents<CActiveX> 的连接点的支持,其中CProxy_... 是向导生成的用于触发事件的代码。

我定义了一个dispinterface如下:

[ uuid(43ECB3DF-F004-4FAD-9BFB-79211A693C3A), helpstring("ActiveX 事件") ] 调度接口_IActiveXEvents { 特性: 方法: [id(1)] void receiveCertificate([in] VARIANT_BOOL isPermissionGranted, [in] BSTR certificateXml); };

并将其与 [default,source] dispinterface _IActiveXEvents 一起包含在 coclass 中。要触发事件,我调用Fire_receiveCertificate(isGranted, _bstr_t(certXml.c_str()).copy()),它在向导代码中定义。

以下 Javascript 将接收事件

function ActiveXObject::receiveCertificate(permission, certificate) {
      alert("alert!");
  }

问题是它只接收一次事件,我必须关闭并重新打开 IE 才能让它再次接收事件。我错过了什么吗?

【问题讨论】:

    标签: javascript c++ events activex


    【解决方案1】:

    如果有人感兴趣,我找到了解决这个问题的方法。我已经在 ROT(运行对象表)中注册了该对象,但没有撤销任何以前存在的注册。因此,出现了多个注册。一旦我确保我撤销了以前的注册,事件就会可靠地触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多