[COM]DispInvoke renvoie E_NOTIMPL mais pas la méthode Invoke. . .
bonjour,
je veux instancier un objet à partir d'un composant COM freeware très simple (Base64 de XStandard) pas de façon classique mais en émulant CoCreateInstance :roll:
l'objet IDispatch est correctement instancié avec IClassFactory en appelant DllGetClassObjet - jusque là tout va bien...
je voudrais en suite de ce code appeler une méthode de cet objet
comme il s'agit d'un appel en "late binding", cette méthode est normalement appelée via la méthode générique Invoke de l'objet IDispatch - ce code est fonctionnel
pour contourner certaines limitations, je cherche à appeler cette même méthode à partir de la fonction DispInvoke en lui fournissant l'interface ITypeInfo correspondant à la coclass choisie mais cette fonction me renvoie le code ole E_NOIMPL qui signifie qu'il ne reconnait pas la méthode que je lui demande d'exécuter
en résumé :
Code:
1 2
| hr:=DispInvoke(@ITest,coTypeInfo,aDispIDs[0],DISPATCH_METHOD,Params,@ReturnValue,nil,@ParamError);
hr:=ITest.Invoke(aDispIDs[0],GUID_NULL,LOCALE_SYSTEM_DEFAULT,DISPATCH_METHOD,Params,@ReturnValue,nil,@ParamError); |
la ligne 1 me renvoie E_NOIMPL alors que la ligne 2 fonctionne nickel 8O
(coTypeInfo étant l'objet ITypeInfo de la coclass à partir de laquelle ITest a été instancié)
j'ai dû louper une marche dans le labyrinthe COM mais je ne vois pas laquelle...
any ideas ?