Compartir a través de


com4:Class

Especifica las propiedades de un CLSID registrado por el paquete que puede compartir uno o varios registros concretos del CLSID para distintos contextos de clase. Por ejemplo, considere un ExeServer que admita la activación fuera de proceso (CLSCTX_LOCAL_SERVER) y un controlador en proceso correspondiente (CLSCTX_INPROC_HANDLER). Por sí mismo, el elemento com4:Class no registra un CLSID para la activación, pero se puede hacer referencia a él por elementos como una Clase ExeServerClassReference/ o InProcessHandlerClassReference/, en cuyo caso sus atributos reemplazan los atributos que, de lo contrario, se pueden especificar directamente en un elemento ExeServer/Class o InProcessHandler/Class. Esta sintaxis es opcional para CLSID que están registradas para un único contexto de clase, pero es necesaria para registrar el mismo CLSID para varios contextos de clase porque la validación del manifiesto requiere que el atributo Id sea único entre todos los elementos Class, ExeServer/Class, InProcessHandler/Class, etc., del manifiesto.

Jerarquía de elemento

<Paquete>

    <APLICACIONES>

         <Application>

              <Extensiones>

                   <com4:Class>

Sintaxis

<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>

Atributos y elementos

Atributos

Atributo Descripción Tipo de datos Obligatorio Valor predeterminado
ProgId Asocia un identificador de programación (ProgID) con un CLSID. Cadena alfanumérica separada por un punto con un valor entre 1 y 255 caracteres de longitud (por ejemplo, Foo.Bar o Foo.Bar.1). No
VersionIndependentProgId Asocia un ProgID a un CLSID. Este valor se usa para determinar la versión más reciente de una aplicación de objeto. Cadena alfanumérica separada por un punto con un valor entre 1 y 255 caracteres de longitud (por ejemplo, Foo.Bar o Foo.Bar.1). No
AutoConvertto Especifica la conversión automática de una clase determinada de objetos a una nueva clase de objetos. GUID con el formato xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. No
InsertableObject Indica que esta clase es insertable. Un valor booleano. No
ShortDisplayName Una versión corta del nombre para mostrar de la clase. Cadena con un valor entre 1 y 40 caracteres de longitud. No
Id El atributo Id corresponde al CLSID (HKCR\CLSID{MyGuid}). GUID con el formato xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
DisplayName Nombre para mostrar de la clase. Cadena con un valor entre 1 y 256 caracteres de longitud. Esta cadena se puede localizar. No

Elementos secundarios

Elemento secundario Descripción
ImplementedCategories Especifica las categorías implementadas por la clase .
Conversión Especifica los formatos que una aplicación puede leer y escribir.
DataFormats Especifica los formatos de datos predeterminados y principales admitidos por una aplicación.
MiscStatus Especifica cómo crear y mostrar un objeto.
Verbos Especifica los verbos que se van a registrar para una aplicación.
DefaultIcon Proporciona información de iconos predeterminada para presentaciones icónicas de objetos.
ToolboxBitmap32 Identifica el nombre del módulo y el identificador de recurso de un mapa de bits de 16 x 16 que se va a usar para la cara de una barra de herramientas o un botón del cuadro de herramientas.
TypeLib Biblioteca de tipos para una clase o interfaz.

Elementos primarios

Elemento primario Descripción
Extensiones Define uno o varios puntos de extensibilidad para la aplicación.

Comentarios

La clave CLSID en el diseño del Registro COM admite dos categorías de información de registro para un CLSID:

  • Detalles de la activación de un contexto de clase específico. Por ejemplo, una subclave LocalServer32 para la activación outofproc (CLSCTX_LOCAL_SERVER), una subclave InprocHandler32 para la activación de un controlador inproc (CLSCTX_INPROC_HANDLER) o una subclave InprocServer32 para la activación inproc (CLSCTX_INPROC_SERVER). El mismo CLSID puede tener registros para cualquier combinación de estos contextos de clase y los detalles de activación de cada uno se especifican de forma independiente en las subclaves correspondientes.
  • Información sobre el CLSID que se comparte entre contextos de clase. Por ejemplo, las propiedades de un servidor OLE que se usan en escenarios OLE, el conjunto de categorías de componentes implementadas por clSID, etc., se proporcionan a través de otras subclaves de la clave CLSID y, si se proporcionan detalles de activación para varios contextos de clase, estas propiedades se asocian semánticamente con clSID, no con un contexto de clase específico.

Los atributos de un elemento com4:Class de nivel superior corresponden a la información de una clave CLSID que se comparte entre contextos de clase. Si un paquete admite la activación de un CLSID para un único contexto de clase, el uso del elemento Class de nivel superior es opcional y estos atributos se pueden especificar directamente en el elemento Class anidado (por ejemplo, ExeServer/Class) que proporciona sus detalles de activación. Sin embargo, el diseño del Registro COM no proporciona una manera de especificar estas propiedades de forma independiente para distintos contextos de clase, y las API que consultan estas propiedades no permiten al autor de la llamada especificar un contexto de clase. Para reflejar este aspecto del modelo de registro de clases COM, la sintaxis del manifiesto solo permite que estas propiedades se especifiquen una vez para un CLSID, lo que exige la unicidad del atributo Id para los elementos Class anidados y de nivel superior. Por lo tanto, para registrar varios contextos de clase para un CLSID en un manifiesto de paquete:

  • Las propiedades compartidas deben proporcionarse como atributos de un elemento Class de nivel superior.
  • Los detalles de activación de contexto por clase deben proporcionarse en elementos ClassReference anidados, por ejemplo, ExeServer Class/ClassReference e InProcessHandlerClassReference/ para un CLSID que admita la activación outofproc y un controlador inproc. El atributo Id del elemento ClassReference hace referencia al elemento Class de nivel superior que contiene las propiedades compartidas.

Ejemplo

<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>

Requisitos

Elemento Value
Espacio de nombres http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (compilación 20348)