com4:Class

異なるクラス コンテキストに対して CLSID の 1 つ以上の具象登録によって共有できる、パッケージによって登録された CLSID のプロパティを指定します。 たとえば、アウトプロセス アクティブ化 (CLSCTX_LOCAL_SERVER) をサポートする ExeServer と、対応するインプロセス ハンドラー (CLSCTX_INPROC_HANDLER) について考えてみましょう。 それ自体では、com4:Class 要素はアクティブ化のために CLSID を登録しませんが、ExeServer ClassClassReference/ や InProcessHandler Class/Class ClassReference などの要素によって参照できます。この場合、その属性は、ExeServer/Class または InProcessHandler/Class 要素で直接指定できる属性を置き換えます。 この構文は、1 つのクラス コンテキストに登録されている CLSID では省略可能ですが、マニフェストの検証では Id 属性がマニフェスト内のすべてのクラス、ExeServer/Class、InProcessHandler/Class などの要素間で一意である必要があるため、複数のクラス コンテキストに同じ CLSID を登録する必要があります。

要素の階層

<パッケージ>

    <アプリケーション>

         <Application>

              <拡張機能>

                   <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 オブジェクトの特定のクラスから新しいクラスのオブジェクトへの自動変換を指定します。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx という形式の GUID。 いいえ
InsertableObject このクラスが挿入可能であることを示します。 ブール値。 いいえ
ShortDisplayName クラス表示名の短いバージョン。 長さが 1 ~ 40 文字の文字列。 いいえ
Id Id 属性は CLSID (HKCR\CLSID{MyGuid}) に対応します。 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx という形式の GUID。 Yes
DisplayName クラスの表示名。 長さが 1 ~ 256 文字の値を持つ文字列。 この文字列はローカライズ可能です。 いいえ

子要素

子要素 説明
ImplementedCategories クラスによって実装されるカテゴリを指定します。
変換 アプリケーションが読み取りおよび書き込みできる形式を指定します。
DataFormats アプリケーションでサポートされる既定のデータ形式とメインデータ形式を指定します。
MiscStatus オブジェクトを作成して表示する方法を指定します。
動詞 アプリケーションに登録する動詞を指定します。
DefaultIcon オブジェクトの象徴的なプレゼンテーションの既定のアイコン情報を提供します。
ToolboxBitmap32 ツール バーまたはツールボックス ボタンの顔に使用する 16 x 16 ビットマップのモジュール名とリソース ID を識別します。
TypeLib クラスまたはインターフェイスのタイプ ライブラリ。

親要素

親要素 説明
拡張機能 アプリの 1 つ以上の拡張ポイントを定義します。

注釈

COM レジストリ レイアウトの CLSID キーは、CLSID の登録情報の 2 つのカテゴリをサポートしています。

  • 特定のクラス コンテキストのアクティブ化の詳細。 たとえば、outofproc アクティブ化用の LocalServer32 サブキー (CLSCTX_LOCAL_SERVER)、inproc ハンドラーをアクティブ化するための InprocHandler32 サブキー (CLSCTX_INPROC_HANDLER)、 inproc アクティブ化用の InprocServer32 サブキー (CLSCTX_INPROC_SERVER)。 同じ CLSID は、これらのクラス コンテキストの任意の組み合わせに対する登録を持つ場合があり、それぞれのアクティブ化の詳細は、対応するサブキーで個別に指定されます。
  • クラス コンテキスト間で共有される CLSID に関する情報。 たとえば、OLE シナリオで使用される OLE サーバーのプロパティ、CLSID によって実装されるコンポーネント カテゴリのセットなどが CLSID キーの他のサブキーを介して提供され、複数のクラス コンテキストにアクティブ化の詳細が提供される場合、これらのプロパティは特定のクラス コンテキストではなく CLSID にセマンティックに関連付けられます。

最上位の com4:Class 要素の属性は、クラス コンテキスト間で共有される CLSID キーの情報に対応します。 パッケージで 1 つのクラス コンテキストに対する CLSID のアクティブ化がサポートされている場合 、最上位クラス 要素の使用は省略可能であり、これらの属性は、アクティブ化の詳細を提供する入れ子になった Class 要素 (ExeServer/Class など) で直接指定することもできます。 ただし、COM レジストリ レイアウトでは、異なるクラス コンテキストに対してこれらのプロパティを個別に指定する方法は提供されません。また、これらのプロパティに対してクエリを実行する API では、呼び出し元がクラス コンテキストを指定することはできません。 COM クラス登録モデルのこの側面を反映するために、マニフェスト構文では、最上位および入れ子になった Class 要素に Id 属性の一意性を要求することによって適用される、CLSID に対してこれらのプロパティを 1 回だけ指定できます。 したがって、CLSID の複数のクラス コンテキストをパッケージ マニフェストに登録するには、

  • 共有プロパティは、最上位クラス要素の属性として指定する必要があります。
  • クラスごとのコンテキストアクティブ化の詳細は、入れ子になった ClassReference 要素で提供する必要があります。たとえば、outofproc アクティブ化と inproc ハンドラーをサポートする CLSID の場合は、ExeServer/ ClassClassReference と InProcessHandler クラス/ClassReference です。 ClassReference 要素の Id 属性は、共有プロパティを含む最上位の Class 要素を参照します。

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

要件

Item
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (ビルド 20348)