Compartilhar via


com4:Class

Especifica as propriedades de um CLSID registradas pelo pacote que podem ser compartilhadas por um ou mais registros concretos do CLSID para contextos de classe diferentes. Por exemplo, considere um ExeServer que dá suporte à ativação fora do processo (CLSCTX_LOCAL_SERVER) e a um manipulador em processo correspondente (CLSCTX_INPROC_HANDLER). Por si só, o elemento com4:Class não registra um CLSID para ativação, mas pode ser referenciado por elementos como umclass ClassClassReference ou InProcessHandler ClassClassReference, nesse caso, seus atributos substituem os atributos que poderiam ser especificados diretamente em um elemento ExeServer/Class ou InProcessHandler/Class. Essa sintaxe é opcional para CLSIDs registrados para um contexto de classe única, mas é necessária para registrar o mesmo CLSID para vários contextos de classe porque a validação de manifesto exige que o atributo Id seja exclusivo entre todos os elementos classe, ExeServer/Classe, InProcessHandler/Class etc., no manifesto.

Hierarquia de elementos

do pacote

    aplicativos <>

          <application>

              extensões de <>

                    <com4:Class>

    extensões de <>

          <com4:Class>

Sintaxe

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

Atributos

Atributo Descrição Tipo de dado Necessário Valor padrão
progId Associa um ProgID (identificador programático) a um CLSID. Uma cadeia de caracteres alfanumérica separada por um período com um valor entre 1 e 255 caracteres de comprimento (por exemplo, Foo.Bar ou Foo.Bar.1). Não
VersionIndependentProgId Associa um ProgID a um CLSID. Esse valor é usado para determinar a versão mais recente de um aplicativo de objeto. Uma cadeia de caracteres alfanumérica separada por um período com um valor entre 1 e 255 caracteres de comprimento (por exemplo, Foo.Bar ou Foo.Bar.1). Não
AutoConvertTo Especifica a conversão automática de uma determinada classe de objetos em uma nova classe de objetos. Um GUID no formato xxxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx. Não
InsertableObject Indica que essa classe é inserível. Um valor booliano. Não
ShortDisplayName Uma versão curta do nome de exibição da classe. Uma cadeia de caracteres com um valor entre 1 e 40 caracteres de comprimento. Não
ID O atributo ID corresponde ao CLSID (HKCR\CLSID{MyGuid}). Um GUID no formato xxxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx. Sim
DisplayName O nome de exibição da classe. Uma cadeia de caracteres com um valor entre 1 e 256 caracteres de comprimento. Essa cadeia de caracteres é localizável. Não

Elementos filho

Elemento filho Descrição
ImplementedCategories Especifica categorias implementadas pela classe.
de Conversão de Especifica os formatos que um aplicativo pode ler e gravar.
DataFormats Especifica os formatos de dados padrão e principais compatíveis com um aplicativo.
MiscStatus Especifica como criar e exibir um objeto.
verbos Especifica os verbos a serem registrados para um aplicativo.
DefaultIcon Fornece informações de ícone padrão para apresentações icônicas de objetos.
ToolboxBitmap32 Identifica o nome do módulo e a ID do recurso para um bitmap de 16 x 16 bits a ser usado para a face de uma barra de ferramentas ou botão de caixa de ferramentas.
TypeLib Uma biblioteca de tipos para uma classe ou interface.

Elementos pai

Elemento pai Descrição
extensões Define um ou mais pontos de extensibilidade para o aplicativo.

Observações

O de chave CLSID no layout do registro COM dá suporte a duas categorias de informações de registro para um CLSID:

  • Detalhes da ativação para um contexto de classe específico. Por exemplo, uma subchave localServer32 para ativação de outofproc (CLSCTX_LOCAL_SERVER), uma subchave InprocHandler32 para ativação de um manipulador inproc (CLSCTX_INPROC_HANDLER) ou uma subchave InprocServer32 para ativação inproc (CLSCTX_INPROC_SERVER). O mesmo CLSID pode ter registros para qualquer combinação desses contextos de classe e os detalhes de ativação de cada um deles são especificados independentemente nas subchaves correspondentes.
  • Informações sobre o CLSID que é compartilhado entre contextos de classe. Por exemplo, as propriedades de um servidor OLE usadas em cenários OLE, o conjunto de categorias de componente implementadas pelo CLSID, etc., são fornecidas por meio de outras subchaves da chave CLSID e, se os detalhes de ativação forem fornecidos para vários contextos de classe, essas propriedades serão associadas semanticamente ao CLSID, não a um contexto de classe específico.

Os atributos de um elemento de com4:Class de nível superior correspondem às informações em uma chave CLSID compartilhada entre contextos de classe. Se um pacote der suporte à ativação de um CLSID para um contexto de classe única, o uso do elemento classe de nível superior será opcional e esses atributos poderão ser especificados diretamente no elemento de Classe aninhado (por exemplo, ExeServer/Class) que fornece seus detalhes de ativação. No entanto, o layout do registro COM não fornece uma maneira de especificar essas propriedades independentemente para contextos de classe diferentes, e as APIs que consultam essas propriedades não permitem que o chamador especifique um contexto de classe. Para refletir esse aspecto do modelo de registro de classe COM, a sintaxe do manifesto só permite que essas propriedades sejam especificadas uma vez para um CLSID, imposta pela exigência de exclusividade do atributo ID para elementos de classe aninhados e de nível superior. Portanto, para registrar vários contextos de classe para um CLSID em um manifesto de pacote:

  • As propriedades compartilhadas devem ser fornecidas como atributos de um elemento de classe de nível superior.
  • Os detalhes de ativação de contexto por classe devem ser fornecidos em elementos ClassReference aninhados, por exemplo, classClassReference e InProcessHandler ClassClassReference para um CLSID que dá suporte à ativação outofproc e a um manipulador inproc. O atributo ID do elemento ClassReference faz referência ao elemento Class de nível superior que contém as propriedades compartilhadas.

Exemplo

<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

Item Valor
namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
versão mínima do sistema operacional Windows 10 (Build 20348)