Поделиться через


com4:Class

Задает свойства ИДЕНТИФИКАТОРа CLSID, зарегистрированного пакетом, которые могут совместно использоваться одной или несколькими конкретными регистрациями CLSID для различных контекстов класса. Например, рассмотрим ExeServer, поддерживающий внепроцессную активацию (CLSCTX_LOCAL_SERVER), и соответствующий внутрипроцессный обработчик (CLSCTX_INPROC_HANDLER). Сам по себе элемент com4:Class не регистрирует CLSID для активации, но на него могут ссылаться такие элементы, как ExeServerClassReference/ или InProcessHandler Class/ClassReference. В этом случае его атрибуты заменяют атрибуты, которые в противном случае могут быть указаны непосредственно в элементе ExeServer/Class или InProcessHandler/Class. Этот синтаксис необязателен для идентификаторов CLSID, зарегистрированных в контексте одного класса, но требуется для регистрации одного и того же идентификатора CLSID для нескольких контекстов классов, так как для проверки манифеста атрибут Id должен быть уникальным среди всех элементов Class, ExeServer/Class, InProcessHandler/Class и т. д.

Иерархия элементов

<Пакет>

    <Приложения>

         <Приложение>

              <Расширения>

                   <com4:Class>

Синтаксис

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

Элементы и атрибуты

Атрибуты

Атрибут Описание Тип данных Обязательно Значение по умолчанию
Progid Связывает программный идентификатор (ProgID) с ИДЕНТИФИКАТОРом CLSID. Буквенно-цифровая строка, разделенная точкой со значением от 1 до 255 символов (например, Foo.Bar или Foo.Bar.1). Нет
VersionIndependentProgId Связывает ProgID с CLSID. Это значение используется для определения последней версии приложения объекта. Буквенно-цифровая строка, разделенная точкой со значением от 1 до 255 символов (например, Foo.Bar или Foo.Bar.1). Нет
AutoConvertTo Задает автоматическое преобразование заданного класса объектов в новый класс объектов. GUID в формате xxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx. Нет
InsertableObject Указывает, что этот класс можно вставить. Логическое значение. Нет
ShortDisplayName Краткая версия отображаемого имени класса. Строка со значением от 1 до 40 символов. Нет
Id Атрибут Id соответствует идентификатору CLSID (HKCR\CLSID{MyGuid}). GUID в формате xxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx. Да
Отображаемое имя Отображаемое имя класса. Строка со значением от 1 до 256 символов в длину. Эта строка может быть локализована. Нет

Дочерние элементы

Дочерний элемент Описание
Реализованные категории Указывает категории, реализованные классом .
Преобразование Задает форматы, которые приложение может читать и записывать.
Dataformats Задает форматы данных по умолчанию и main, поддерживаемые приложением.
MiscStatus Указывает способ создания и отображения объекта.
Глаголы Указывает команды, которые будут зарегистрированы для приложения.
DefaultIcon Предоставляет сведения о значках по умолчанию для знаковых представлений объектов.
ToolboxBitmap32 Определяет имя модуля и идентификатор ресурса для растрового изображения 16 x 16, используемого для лицевой стороны панели инструментов или кнопки панели элементов.
Typelib Библиотека типов для класса или интерфейса.

Родительские элементы

Родительский элемент Описание
Расширения Определяет одну или несколько точек расширяемости для приложения.

Комментарии

Ключ CLSID в макете реестра COM поддерживает две категории сведений о регистрации для CLSID:

  • Сведения об активации для определенного контекста класса. Например, подраздел LocalServer32 для активации outofproc (CLSCTX_LOCAL_SERVER), подраздел InprocHandler32 для активации обработчика inproc (CLSCTX_INPROC_HANDLER) или подраздел InprocServer32 для активации inproc (CLSCTX_INPROC_SERVER). Один и тот же ИДЕНТИФИКАТОР CLSID может иметь регистрации для любого сочетания контекстов класса, и сведения об активации для каждого из них указываются независимо в соответствующих подразделах.
  • Сведения о идентификаторе CLSID, совместно используемом контекстами классов. Например, свойства OLE-сервера, используемые в сценариях OLE, набор категорий компонентов, реализованных CLSID и т. д., предоставляются через другие подразделы ключа CLSID, а если сведения об активации предоставляются для нескольких контекстов классов, эти свойства семантически связываются с CLSID, а не с контекстом конкретного класса.

Атрибуты элемента com4:Class верхнего уровня соответствуют сведениям в ключе CLSID, совместно используемым контекстами класса. Если пакет поддерживает активацию CLSID для одного контекста класса, использование элемента класса верхнего уровня является необязательным, и эти атрибуты можно также указать непосредственно во вложенном элементе Class (например, ExeServer/Class), который предоставляет сведения об активации. Однако макет реестра COM не позволяет указывать эти свойства независимо для разных контекстов классов, а API-интерфейсы, запрашивающие эти свойства, не позволяют вызывающей стороне указать контекст класса. Чтобы отразить этот аспект модели регистрации com-классов, синтаксис манифеста позволяет указать эти свойства только один раз для CLSID, что требует уникальности атрибута Id для элементов класса верхнего уровня и вложенных элементов Class. Таким образом, чтобы зарегистрировать несколько контекстов классов для CLSID в манифесте пакета, выполните следующие действия.

  • Общие свойства должны быть предоставлены в качестве атрибутов элемента Класса верхнего уровня.
  • Сведения о контекстной активации для каждого класса должны быть предоставлены во вложенных элементах ClassReference, например ExeServerClassReference/ и InProcessHandlerClassReference/ для ИДЕНТИФИКАТОРа CLSID, поддерживающего активацию outofproc и обработчик inproc. Атрибут Id элемента ClassReference ссылается на элемент класса верхнего уровня, содержащий общие свойства.

Пример

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

Требования

Элемент Значение
Пространство имен http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (сборка 20348)