IDispatch

Le IDispatch est l'interface qui expose le VIEUX protocole de l'automation . Il est l'une des interfaces standard qui peuvent être exposées par des objets de COM . Le I dans le IDispatch se rapporte à l'interface. COM distingue trois types d'interface : coutume de , expédition de et interfaces duelles du .

IDispatch dérive du IUnknown et prolonge son ensemble de trois méthodes ( AddRef , dégagement de et QueryInterface ) de avec des quatre méthodes additionnelles - le GetTypeInfoCount , le GetTypeInfo , le GetIDsOfNames et le appellent .

L'interface d'automation (IDispatch) permet à une application de client de découvrir quelles propriétés et méthodes sont soutenues par un objet à d'exécution. Elle fournit également les informations nécessaires pour appeler ces propriétés et méthodes. Les applications de client n'ont pas besoin de se rendre compte des membres d'objet quand elles sont compilées. Ceci permet des objets de COM et d'ActiveX à s'appeler par scripting des plates-formes de programmes telles que le serveur du asp et le Javascript sur le Internet Explorer , où appelant des conventions ne sont pas connus qu'alors le IIS ou IE ont été établis. En revanche, une bibliothèque des programmes résultants simple est compilée et incorporée dans un programme, alors que les besoins d'un appel de DLL aussi de savoir un nom et des paramètres de fonction à au moment de la compilation.NET ne remplacent pas la fonction d'IDispatch et de COM puisque toutes les fonctions appelées d'un programme doivent être connues à au moment de la compilation.

Chaque propriété et méthode appliquées par un objet qui soutient l'interface d'IDispatch a ce qui s'appelle une identification d'expédition, qui est souvent DISPID abrégé. Le DISPID est les moyens primaires d'identifier une propriété ou une méthode et doit être fourni au appelle la fonction de pour qu'une propriété ou une méthode soit appelée, avec un choix de variantes contenant les paramètres. La fonction de GetIDsOfNames de peut être employée pour obtenir le DISPID approprié d'un nom de propriété ou de méthode qui est dans le format de la corde .

Un scénariste peut demander à COM objectent pour une méthode ou une propriété qu'elle connaît déjà environ de la documentation. Puis, le client peut exécuter la fonction avec appellent fourni par l'interface d'IDispatch, une forme de tard-liant . Cette sorte de possibilités a été également soutenue par le d'échange de données dynamique (DDE), qui n'est jamais devenu dû populaire à être trop de bas niveau.

Il est flexible, mais souffre des frais généraux de vérifier la validité de la méthode et des paramètres au temps d'exécution.

interface IDispatch : IUnknown public { ULONG virtuel GetTypeInfoCount (pctinfo non signé d'international FAR*) = 0 ; HRESULT virtuel GetTypeInfo (iTInfo non signé d'international, Lcid de LCID, ITypeInfo FAR* FAR* ppTInfo ) = 0 ; ULONG virtuel GetIDsOfNames (riid de REFIID , OLECHAR FAR* FAR* rgszNames, cNames non signés d'international, Lcid de LCID, rgDispId de DISPID FAR* ) = 0 ; ULONG virtuels appellent (le dispIdMember de DISPID, Riid de REFIID, Lcid de LCID, wFlags de MOT, pDispParams de DISPPARAMS FAR*, pVarResult VARIABLE de FAR*, pExcepInfo d'EXCEPINFO FAR*, puArgErr non signé d'international FAR* ) = 0 ; } ; L'identification d'interface d'IDispatch est {00020400-0000-0000-C000-000000000046}.

Random links:Stade de lumière | Collines d'Ediacara | Chu Ching-wu | Pannotia | Musée de verre | IDispatch