J'ai des problèmes pour appeler une méthode non IDispatch dans un contrôle ActiveX que j'ai écrit.Utilisation d'un contrôle ActiveX provenant d'un autre contrôle ActiveX sur une page Web
J'ai une page Web avec deux objets Active X séparés que j'ai écrits. Je commence par appeler une méthode sur le premier objet qui retourne un pointeur d'interface vers un nouvel objet COM qui n'est pas co-créable. J'appelle ensuite une méthode sur ce nouvel objet en passant le second objet ActiveX comme argument. Dans cette méthode, j'appelle QueryInterface pour obtenir un pointeur d'interface privé/interne sur mon deuxième objet ActiveX. Le problème est que le pointeur renvoyé par QueryInterface n'est pas un pointeur valide sur mon objet et que toute tentative d'utilisation de ce dernier se bloque.
Comment puis-je obtenir une interface avec mon objet réel que je peux utiliser? Mon interface privée utilise des structures donc elle n'est pas compatible avec IDispatch, et étant une interface interne je ne souhaite pas l'exposer du tout dans la bibliothèque de types.
J'aurais dû y répondre moi-même plus tôt. Vous avez raison dans la première partie - JavaScript encapsule mon objet avec son propre objet de sorte que l'objet transmis au second contrôle ActiveX n'est pas mon objet, mais l'encapsuleur JS. QueryInterface est géré par l'objet JavaScript et renvoie le pointeur de l'interface IDispatch même si j'ai demandé autre chose, plutôt bizarre. –