J'ai écrit un contrôle ActiveX en utilisant ATL. J'ai utilisé l'assistant pour ajouter le support pour les points de connexion qui ont ajouté public IConnectionPointContainerImpl<CActiveX>
et CProxy_IActiveXEvents<CActiveX>
, où CProxy_...
est le code généré par l'assistant pour déclencher des événements.Javascript ne reçoit qu'une seule fois l'événement ActiveX
J'ai défini un dispinterface comme suit:
[ UUID (43ECB3DF-F004-4FAD-9BFB-79211A693C3A), helpstring ("Événements ActiveX") ] dispinterface de _IActiveXEvents { propriétés: méthodes: [id (1)] void receiveCertificate ([en] VARIANT_BOOL isPermissionGranted, [en] BSTR certificateXml); };
et l'a inclus dans la coclasse avec [default,source] dispinterface _IActiveXEvents
. Pour déclencher l'événement, appelez le Fire_receiveCertificate(isGranted, _bstr_t(certXml.c_str()).copy())
, qui est défini dans le code de l'assistant.
ci-dessous Javascript recevra l'événement
function ActiveXObject::receiveCertificate(permission, certificate) { alert("alert!"); }
Le problème est qu'il ne reçoit que l'événement une fois, et je dois fermer et rouvrir IE pour obtenir de recevoir à nouveau l'événement. Est-ce que je manque quelque chose?