com4:Class

Spécifie les propriétés d’un CLSID inscrit par le package qui peut être partagé par une ou plusieurs inscriptions concrètes du CLSID pour différents contextes de classe. Par exemple, considérez un ExeServer prenant en charge l’activation hors processus (CLSCTX_LOCAL_SERVER) et un gestionnaire in-process correspondant (CLSCTX_INPROC_HANDLER). Par lui-même, l’élément com4:Class n’inscrit pas un CLSID pour l’activation, mais il peut être référencé par des éléments tels qu’une classe ExeServer/ClassReference ou InProcessHandlerClassReference, 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 toutes les classes, ExeServer/Class, InProcessHandler/Class, etc., des éléments 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 avec une valeur comprise entre 1 et 255 caractères (par exemple, Foo.Bar ou Foo.Bar.1). Yes
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 avec une valeur comprise entre 1 et 255 caractères (par exemple, Foo.Bar ou Foo.Bar.1). Oui
AutoConvertTo Spécifie la conversion automatique d’une classe donnée d’objets en une nouvelle classe d’objets. GUID sous la forme xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx. Yes
InsertableObject Indique que cette classe peut être insérée. Une valeur booléenne. Yes
ShortDisplayName Version courte du nom complet de la classe. Chaîne dont la valeur est comprise entre 1 et 40 caractères. Oui
Id L’attribut ID correspond au CLSID (HKCR\CLSID{MyGuid}). GUID sous la forme xxxxxxxx-xxxx-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. Yes

É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 principaux pris en charge par une application.
MiscStatus Spécifie comment créer et afficher un objet.
Verbes Spécifie les verbes à inscrire pour une application.
DefaultIcon Fournit des informations d’icône par défaut pour les présentations emblématiques d’objets.
ToolboxBitmap32 Identifie le nom du module et l’ID de ressource d’une bitmap de 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 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, et 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 n’autorisent pas l’appelant à spécifier un contexte de classe. Pour refléter cet aspect du modèle d’inscription de classe COM, la syntaxe du manifeste permet uniquement de spécifier ces propriétés une seule fois pour un CLSID, appliquée en exigeant l’unicité de l’attribut ID pour les éléments class de niveau supérieur et imbriqué. 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 de contexte par classe doivent être fournis dans des éléments ClassReference imbriqués, par exemple, ExeServer/ClassReference et 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>

Spécifications

Valeur
Espace de noms http://schemas.microsoft.com/appx/manifest/com/windows10/4