com4:Class

Specifica le proprietà di un CLSID registrato dal pacchetto che può essere condiviso da una o più registrazioni concrete del CLSID per contesti di classe diversi. Si consideri ad esempio un exeServer che supporta l'attivazione out-of-process (CLSCTX_LOCAL_SERVER) e un gestore in-process corrispondente (CLSCTX_INPROC_HANDLER). Di per sé, l'elemento com4:Class non registra un CLSID per l'attivazione, ma può essere fatto riferimento da elementi come Classe ExeServerClassReference/ o InProcessHandlerClassReference/, nel qual caso i relativi attributi sostituiscono gli attributi che potrebbero altrimenti essere specificati direttamente in un elemento ExeServer/Class o InProcessHandler/Class. Questa sintassi è facoltativa per i CLSID registrati per un singolo contesto di classe, ma è necessario registrare lo stesso CLSID per più contesti di classe perché la convalida del manifesto richiede che l'attributo Id sia univoco tra tutti gli elementi Class, ExeServer/Class, InProcessHandler/Class e così via.

Gerarchia degli elementi

<Pacchetto>

    <Applicazioni>

         <Applicazione>

              <Estensioni>

                   <com4:Class>

Sintassi

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

Attributi ed elementi

Attributi

Attributo Descrizione Tipo di dati Obbligatoria Valore predefinito
Progid Associa un identificatore programmatico (ProgID) a un CLSID. Stringa alfanumerica separata da un punto con un valore compreso tra 1 e 255 caratteri (ad esempio, Foo.Bar o Foo.Bar.1). No
VersionIndependentProgId Associa un ProgID a un CLSID. Questo valore viene usato per determinare la versione più recente di un'applicazione oggetto. Stringa alfanumerica separata da un punto con un valore compreso tra 1 e 255 caratteri (ad esempio, Foo.Bar o Foo.Bar.1). No
AutoConvertTo Specifica la conversione automatica di una determinata classe di oggetti in una nuova classe di oggetti . GUID nel formato xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. No
InsertableObject Indica che questa classe può essere inserita. Un valore booleano. No
ShortDisplayName Versione breve del nome visualizzato della classe. Stringa con un valore compreso tra 1 e 40 caratteri. No
Id L'attributo Id corrisponde al CLSID (HKCR\CLSID{MyGuid}). GUID nel formato xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
DisplayName Nome visualizzato della classe. Stringa con un valore compreso tra 1 e 256 caratteri. Questa stringa è localizzabile. No

Elementi figlio

Elemento figlio Descrizione
ImplementazioneCategorie Specifica le categorie implementate dalla classe .
Conversione Specifica i formati che un'applicazione può leggere e scrivere.
Dataformats Specifica i formati di dati predefiniti e principali supportati da un'applicazione.
MiscStatus Specifica come creare e visualizzare un oggetto .
Verbi Specifica i verbi da registrare per un'applicazione.
DefaultIcon Fornisce informazioni sull'icona predefinite per le presentazioni iconiche di oggetti.
ToolboxBitmap32 Identifica il nome del modulo e l'ID risorsa per una bitmap 16 x 16 da usare per il viso di una barra degli strumenti o di un pulsante della casella degli strumenti.
Typelib Libreria dei tipi per una classe o un'interfaccia.

Elementi padre

Elemento padre Descrizione
Estensioni Definisce uno o più punti di estendibilità per l'app.

Commenti

La chiave CLSID nel layout del Registro di sistema COM supporta due categorie di informazioni di registrazione per un CLSID:

  • Dettagli dell'attivazione per un contesto di classe specifico. Ad esempio, una sottochiave LocalServer32 per l'attivazione outofproc (CLSCTX_LOCAL_SERVER), una sottochiave InprocHandler32 per l'attivazione di un gestore inproc (CLSCTX_INPROC_HANDLER) o una sottochiave InprocServer32 per l'attivazione inproc (CLSCTX_INPROC_SERVER). Lo stesso CLSID può avere registrazioni per qualsiasi combinazione di questi contesti di classe e i dettagli di attivazione per ognuno vengono specificati in modo indipendente nelle sottochiavi corrispondenti.
  • Informazioni sul CLSID condiviso tra contesti di classe. Ad esempio, le proprietà di un server OLE utilizzato negli scenari OLE, il set di categorie di componenti implementate dal CLSID e così via, vengono fornite tramite altre sottochiavi della chiave CLSID e, se vengono forniti dettagli di attivazione per più contesti di classe, queste proprietà sono semanticamente associate al CLSID, non con un contesto di classe specifico.

Gli attributi di un elemento com4:Class di primo livello corrispondono alle informazioni in una chiave CLSID condivisa tra contesti di classe. Se un pacchetto supporta l'attivazione di un CLSID per un singolo contesto di classe, l'uso dell'elemento Class di primo livello è facoltativo e questi attributi possono essere specificati in alternativa direttamente nell'elemento Classe annidata (ad esempio ExeServer/Class) che ne fornisce i dettagli di attivazione. Tuttavia, il layout del Registro di sistema COM non consente di specificare queste proprietà in modo indipendente per contesti di classe diversi e le API che eseguono query su queste proprietà non consentono al chiamante di specificare un contesto di classe. Per riflettere questo aspetto del modello di registrazione della classe COM, la sintassi del manifesto consente di specificare queste proprietà una sola volta per un CLSID, imposto richiedendo l'univocità dell'attributo Id per gli elementi classe di primo livello e annidati. Pertanto, per registrare più contesti di classe per un CLSID in un manifesto del pacchetto:

  • Le proprietà condivise devono essere fornite come attributi di un elemento Class di primo livello.
  • I dettagli di attivazione del contesto per classe devono essere forniti negli elementi ClassReference annidati, ad esempio Classe ExeServerClassReference/ eInProcessHandler ClassReference/ per un CLSID che supporta l'attivazione outofproc e un gestore inproc. L'attributo Id dell'elemento ClassReference fa riferimento all'elemento Class di primo livello contenente le proprietà condivise.

Esempio

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

Requisiti

Elemento Valore
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (Build 20348)