Méthode IDispatch ::Invoke (oaidl.h)
Fournit l'accès aux propriétés et aux méthodes exposées par un objet. La fonction de répartition DispInvoke fournit une implémentation standard d’Invoke.
Syntaxe
HRESULT Invoke(
[in] DISPID dispIdMember,
[in] REFIID riid,
[in] LCID lcid,
[in] WORD wFlags,
[in, out] DISPPARAMS *pDispParams,
[out] VARIANT *pVarResult,
[out] EXCEPINFO *pExcepInfo,
[out] UINT *puArgErr
);
Paramètres
[in] dispIdMember
Identifie le membre. Utilisez GetIDsOfNames ou la documentation de l’objet pour obtenir l’identificateur de répartition.
[in] riid
Réservé à un usage ultérieur. Doit être IID_NULL.
[in] lcid
Contexte des paramètres régionaux dans lequel interpréter les arguments. Le lcid est utilisé par la fonction GetIDsOfNames et est également passé à Invoke pour permettre à l’objet d’interpréter ses arguments spécifiques à un paramètre régional.
Les applications qui ne prennent pas en charge plusieurs langues nationales peuvent ignorer ce paramètre. Pour plus d’informations, consultez Prise en charge de plusieurs langues nationales et exposition d’objets ActiveX.
[in] wFlags
Indicateurs décrivant le contexte de l’appel Invoke .
[in, out] pDispParams
Pointeur vers une structure DISPPARAMS contenant un tableau d’arguments, un tableau d’arguments DISPID pour les arguments nommés et le nombre d’éléments dans les tableaux.
[out] pVarResult
Pointeur vers l’emplacement où le résultat doit être stocké, ou NULL si l’appelant n’attend aucun résultat. Cet argument est ignoré si DISPATCH_PROPERTYPUT ou DISPATCH_PROPERTYPUTREF est spécifié.
[out] pExcepInfo
Pointeur vers une structure qui contient les informations sur les exceptions. Cette structure doit être renseignée si DISP_E_EXCEPTION est retourné. Sa valeur peut être NULL.
[out] puArgErr
Index dans rgvarg du premier argument qui a une erreur. Les arguments étant stockés dans pDispParams-rgvarg> dans l’ordre inverse, le premier argument est celui avec l’index le plus élevé du tableau. Ce paramètre est retourné uniquement lorsque la valeur de retour obtenue est DISP_E_TYPEMISMATCH ou DISP_E_PARAMNOTFOUND. Cet argument peut être défini sur null. Pour plus d’informations, consultez Renvoi d’erreurs.
Valeur retournée
Cette méthode peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
Réussite. |
|
Le nombre d’éléments fournis à DISPPARAMS est différent du nombre d’arguments acceptés par la méthode ou la propriété. |
|
L’un des arguments dans DISPPARAMS n’est pas un type de variante valide. |
|
L’application doit lever une exception. Dans ce cas, la structure passée dans pexcepinfo doit être renseignée. |
|
Le membre demandé n’existe pas. |
|
Cette implémentation d’IDispatch ne prend pas en charge les arguments nommés. |
|
L’un des arguments de DISPPARAMS n’a pas pu être exécuté sous la force du type spécifié. |
|
L’un des ID de paramètre ne correspond pas à un paramètre sur la méthode . Dans ce cas, puArgErr est défini sur le premier argument qui contient l’erreur. |
|
Un ou plusieurs des arguments n’ont pas pu être mis sous la force. L’index du premier paramètre avec le type incorrect dans rgvarg est retourné dans puArgErr. |
|
L’identificateur d’interface transmis dans riid n’est pas IID_NULL. |
|
Le membre appelé interprète les arguments de chaîne en fonction du LCID, et le LCID n’est pas reconnu. Si le LCID n’est pas nécessaire pour interpréter les arguments, cette erreur ne doit pas être retournée |
|
Un paramètre obligatoire a été omis. |
Remarques
En règle générale, vous ne devez pas implémenter Invoke directement. Utilisez plutôt l’interface de répartition pour créer les fonctions CreateStdDispatch et DispInvoke. Pour plus d’informations, consultez CreateStdDispatch, DispInvoke, Creating the IDispatch Interface and Exposing ActiveX Objects.
Si un traitement spécifique à l’application doit être effectué avant d’appeler un membre, le code doit effectuer les actions nécessaires, puis appeler ITypeInfo ::Invoke pour appeler le membre. ITypeInfo ::Invoke agit exactement comme Invoke. Les implémentations standard d’Invoke créées par CreateStdDispatch et DispInvoke sont reportées sur ITypeInfo ::Invoke.
Dans un client ActiveX, Invoke doit être utilisé pour obtenir et définir les valeurs des propriétés, ou pour appeler une méthode d’un objet ActiveX. L’argument dispIdMember identifie le membre à appeler. Les DISPID qui identifient les membres sont définis par l’implémenteur de l’objet et peuvent être déterminés à l’aide de la documentation de l’objet, de la fonction IDispatch ::GetIDsOfNames ou de l’interface ITypeInfo .
Lorsque vous utilisez IDispatch ::Invoke() avec DISPATCH_PROPERTYPUT ou DISPATCH_PROPERTYPUTREF, vous devez initialiser spécialement les éléments cNamedArgs et rgdispidNamedArgs de votre structure DISPPARAMS avec les éléments suivants :
DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;
Les informations suivantes s’adressent aux développeurs de clients ActiveX et à d’autres utilisateurs qui utilisent du code pour exposer des objets ActiveX. Il décrit le comportement auquel les utilisateurs d’objets exposés doivent s’attendre.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | oaidl.h |