J'ai un contrôle ActiveX que j'ai écrit en utilisant ATL, et je rencontre un problème assez sérieux et confus. Lorsque iDispatch :: Invoke est appelé avec DISPATCH_PROPERTYPUT/METHOD tout va bien. Lorsque je renvoie une valeur à IE javascript, après un appel de méthode d'un VT_BSTR avec un BSTR valide, cela fonctionne très bien.Autorisation refusée dans IE w/iDispatch DISPATCH_PROPERTYGET
Mais lorsque je tente:
var stringValue = Object.stringValue;
qui appelle IDispatch invoqué avec le drapeau de DISPATCH_PROPERTYGET, et je mis la valeur de retour à VT_BSTR avec un BSTR valide (exactement le même que j'utilise avec les appels de méthode), J'obtiens une boîte d'erreur d'autorisation refusée dans IE.
Lorsque je renvoie divers autres types de données (longs, entiers, booléens, ... etc) au javascript IE, cela fonctionne très bien (avec la méthode propertyGet()). Je reçois seulement la permission refusée en retournant VT_BSTR.
Des idées?
Je suppose que vous ne retournez pas E_ACCESSDENIED. –
allo, \t \t \t \t pvarResult-> bstrVal = (BSTR) c; \t \t \t \t pvarResult-> vt = VT_BSTR; \t \t \t \t if (wFlags == DISPATCH_PROPERTYGET) \t \t \t \t \t S_OK de retour; comme note Je viens de placer l'instruction if wflags == DISPATCH_PROPERTYGET il y a quelques jours pour m'assurer que les choses retournaient S_OK. Ceci est un problème confus pour moi .. J'ai versé sur les bits idispatch sur msdn et pas trouvé beaucoup pour indiquer ce que je fais mal. également sur le débogage de la bstr est valide .. et le même bloc de code fonctionne lorsque dispatch_method est défini dans wflags .. – anthony
Désolé pour la mise en forme avec cela. pvarResult-> bstrVal = (BSTR) c; pvarResult-> vt = VT_BSTR; if (wFlags == DISPATCH_PROPERTYGET) return S_OK – anthony