Partager via


com4 :Class

Spécifie les propriétés d’un CLSID inscrit par le package qui peuvent être partagées par une ou plusieurs inscriptions concrètes du CLSID pour différents contextes de classe. Par exemple, prenons un ExeServer prenant en charge l’activation hors processus (CLSCTX_LOCAL_SERVER) et un gestionnaire in-process (CLSCTX_INPROC_HANDLER) correspondant. En soi, l’élément com4 :Class n’inscrit pas de CLSID pour l’activation, mais il peut être référencé par des éléments tels qu’une classe/ ExeServerClassReference ou InProcessHandler/ClassReference, auquel cas ses attributs remplacent les attributs qui pourraient autrement être spécifiés directement dans un élément ExeServer/Class ou InProcessHandler/Class. Cette syntaxe est facultative pour les CLSID inscrits pour un contexte de classe unique, mais elle est nécessaire pour inscrire le même CLSID pour plusieurs contextes de classe, car la validation du manifeste nécessite que l’attribut Id soit unique parmi tous les éléments Class, ExeServer/Class, InProcessHandler/Class, etc., dans le manifeste.

Hiérarchie d’éléments

<Paquet>

    <Applications>

         <Application>

              <Extensions>

                   <com4 :Class>

Syntaxe

<com4:Class
  ProgId = 'An alphanumeric string separated by a period with a value between 1 and 255 characters in length (for example, Foo.Bar or Foo.Bar.1).'
  VersionIndependentProgId = 'An alphanumeric string separated by a period with a value between 1 and 255 characters in length (for example, Foo.Bar or Foo.Bar.1).'
  AutoConvertTo = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  InsertableObject = 'A boolean value.'
  ShortDisplayName = 'A string with a value between 1 and 40 characters in length.'
  Id = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  DisplayName = 'A string with a value between 1 and 256 characters in length. This string is localizable.' >

<!-- Child elements -->
  ImplementedCategories
  Conversion
  DataFormats
  MiscStatus
  Verbs
  DefaultIcon
  ToolboxBitmap32
  TypeLib

</com4:Class>

Attributs et éléments

Attributs

Attribut Description Type de données Obligatoire Valeur par défaut
ProgId Associe un identificateur programmatique (ProgID) à un CLSID. Chaîne alphanumérique séparée par un point dont la valeur est comprise entre 1 et 255 caractères (par exemple, Foo.Bar ou Foo.Bar.1). No
VersionIndependentProgId Associe un ProgID à un CLSID. Cette valeur est utilisée pour déterminer la dernière version d’une application objet. Chaîne alphanumérique séparée par un point dont la valeur est comprise entre 1 et 255 caractères (par exemple, Foo.Bar ou Foo.Bar.1). No
AutoConvertTo Spécifie la conversion automatique d’une classe d’objets donnée en une nouvelle classe d’objets. GUID au format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx. No
InsertableObject Indique que cette classe peut être insérée. Une valeur booléenne. No
ShortDisplayName Version courte du nom complet de la classe. Chaîne dont la valeur est comprise entre 1 et 40 caractères. No
Id L’attribut Id correspond au CLSID (HKCR\CLSID{MyGuid}). GUID au format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx. Yes
DisplayName Nom complet de la classe. Chaîne dont la valeur est comprise entre 1 et 256 caractères. Cette chaîne est localisable. No

Éléments enfants

Élément enfant Description
ImplementedCategories Spécifie les catégories implémentées par la classe .
Conversion Spécifie les formats qu’une application peut lire et écrire.
Dataformats Spécifie les formats de données par défaut et main pris en charge par une application.
MiscStatus Spécifie comment créer et afficher un objet.
Verbes et adverbes Spécifie les verbes à inscrire pour une application.
DefaultIcon Fournit des informations sur les icônes par défaut pour les présentations emblématiques d’objets.
Boîte à outilsBitmap32 Identifie le nom du module et l’ID de ressource d’une bitmap 16 x 16 à utiliser pour le visage d’une barre d’outils ou d’un bouton de boîte à outils.
TypeLib Bibliothèque de types pour une classe ou une interface.

Éléments parents

Élément parent Description
Extensions Définit un ou plusieurs points d’extensibilité pour l’application.

Remarques

La clé CLSID dans la disposition du Registre COM prend en charge deux catégories d’informations d’inscription pour un CLSID :

  • Détails de l’activation pour un contexte de classe spécifique. Par exemple, une sous-clé LocalServer32 pour l’activation outofproc (CLSCTX_LOCAL_SERVER), une sous-clé InprocHandler32 pour l’activation d’un gestionnaire inproc (CLSCTX_INPROC_HANDLER) ou une sous-clé InprocServer32 pour l’activation inproc (CLSCTX_INPROC_SERVER). Le même CLSID peut avoir des inscriptions pour n’importe quelle combinaison de ces contextes de classe, et les détails d’activation de chacun d’eux sont spécifiés indépendamment dans les sous-clés correspondantes.
  • Informations sur le CLSID partagé entre les contextes de classe. Par exemple, les propriétés d’un serveur OLE utilisé dans les scénarios OLE, l’ensemble des catégories de composants implémentées par le CLSID, etc., sont fournies via d’autres sous-clés de la clé CLSID. Si les détails d’activation sont fournis pour plusieurs contextes de classe, ces propriétés sont sémantiquement associées au CLSID, et non à un contexte de classe spécifique.

Les attributs d’un élément com4 :Class de niveau supérieur correspondent aux informations d’une clé CLSID partagée entre les contextes de classe. Si un package prend en charge l’activation d’un CLSID pour un contexte de classe unique, l’utilisation de l’élément Class de niveau supérieur est facultative et ces attributs peuvent également être spécifiés directement dans l’élément Class imbriqué (par exemple, ExeServer/Class) qui fournit ses détails d’activation. Toutefois, la disposition du Registre COM ne permet pas de spécifier ces propriétés indépendamment pour différents contextes de classe, et les API qui interrogent ces propriétés ne permettent pas à l’appelant de spécifier un contexte de classe. Pour refléter cet aspect du modèle d’inscription de classe COM, la syntaxe du manifeste permet de spécifier ces propriétés une seule fois pour un CLSID, en exigeant l’unicité de l’attribut Id pour les éléments Class de niveau supérieur et imbriqués. Par conséquent, pour inscrire plusieurs contextes de classe pour un CLSID dans un manifeste de package :

  • Les propriétés partagées doivent être fournies en tant qu’attributs d’un élément Class de niveau supérieur.
  • Les détails d’activation du contexte par classe doivent être fournis dans des éléments ClassReference imbriqués, par exemple, classe ExeServer/ClassReference et classe InProcessHandler /ClassReference pour un CLSID qui prend en charge l’activation outofproc et un gestionnaire inproc. L’attribut Id de l’élément ClassReference fait référence à l’élément Class de niveau supérieur contenant les propriétés partagées.

Exemple

<com4:Extension Category="windows.comServer">
  ...
  <!-- Example of a CLSID that has both aan inproc server and an exe server implementation, using top level Claass and ClassReference -->
  <com4:Class Id="10000000-0000-0000-0000-000000000009" DisplayName="CLSID_FOO3"/>
  <com4:ExeServer Executable="MyServer.exe" DisplayName="My Server">
    <com4:ClassReference Id="10000000-0000-0000-0000-000000000009" />
  </com4:ExeServer>
  <com4:InProcessServer Path="MyServer.dll">
    <com4:ClassReference Id="10000000-0000-0000-0000-000000000009" ThreadingModel="Both"/>
  </com4:InProcessServer>
  ...
</com4:Extension>

Configuration requise

Élément Valeur
Espace de noms http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (build 20348)