Utiliser QueryService pour récupérer une interface native pour un objet IAccessible
Les développeurs de serveurs peuvent utiliser cette technique pour exposer un pointeur vers un nœud de document personnalisé pour un objet IAccessible . Cela suppose que vous exposez déjà des objets IAccessible . Cette technique permet aux clients d’obtenir un objet personnalisé à partir d’un objet IAccessible .
Pour exposer un modèle objet natif pour un IAccessible (serveurs)
- Ajoutez la prise en charge de l’interface IServiceProvider sur votre objet IAccessible .
- Définissez un GUID qui représente la fonctionnalité d’obtention de l’interface personnalisée à partir d’objets IAccessible . Il s’agit d’un ID de service. Vous pouvez utiliser GUIDGEN.EXE pour générer un ID de service ou réutiliser l’ID d’interface si vous disposez d’une interface personnalisée.
- Implémentez la méthode IServiceProvider::QueryService afin qu’elle retourne un pointeur vers l’interface personnalisée lorsqu’elle est appelée avec l’ID de service défini précédemment dans cette procédure. QueryService doit retourner NULL pour toutes les autres valeurs d’ID de service.
- Publiez l’ID de service afin que les clients puissent l’utiliser.
Les clients peuvent utiliser cette fonctionnalité pour obtenir un pointeur vers l’objet personnalisé à partir d’un objet IAccessible .
Pour obtenir un pointeur vers un objet personnalisé à partir d’un IAccessible (clients)
- Appelez QueryInterface(IID_IServiceProvider) sur un pointeur d’interface IAccessible pour obtenir un pointeur d’interface IServiceProvider .
- Appelez IServiceProvider::QueryService avec l’ID de service publié pour obtenir un pointeur vers l’objet personnalisé pour IAccessible.
- Relâchez l’interface IServiceProvider si elle n’est plus nécessaire.
Pour être utilisables entre les processus, les serveurs peuvent avoir besoin d’inscrire l’interface retournée auprès du modèle COM (Component Object Model).
Cette technique est utilisée par Microsoft Internet Explorer 4.0 et versions ultérieures. Il permet aux clients d’obtenir un pointeur d’interface IHTMLElement2 qui correspond à un objet IAccessible .