次の方法で共有


拡張性の概要

コマンド パレットには完全な拡張モデルが用意されており、開発者はパレット用に独自のエクスペリエンスを作成できます。

拡張機能の記述を始める最も速い方法は、コマンド パレット自体から行う方法です。 [新しい拡張機能の作成] コマンドを実行し、フィールドに入力してテンプレート プロジェクトを設定するだけで、開始する準備が整います。

詳細な手順については、次のページを参照してください。

拡張機能の詳細

コマンド パレットは、拡張機能がコマンド パレットと通信する方法である WinRT API (Microsoft.CommandPalette.Extensions) を定義します。

コマンド パレットでは、パッケージ カタログを使用して、windows.appExtensioncom.microsoft.commandpalette としてそれ自体を一覧表示するアプリを検索します。

拡張機能の登録

拡張機能は、 .appxmanifestを使用してコマンド パレットに自分自身を登録できます。 例

<Extensions>
    <com:Extension Category="windows.comServer">
        <com:ComServer>
            <com:ExeServer Executable="ExtensionName.exe" Arguments="-RegisterProcessAsComServer" DisplayName="Sample Extension">
                <com:Class Id="<Extension CLSID Here>" DisplayName="Sample Extension" />
            </com:ExeServer>
        </com:ComServer>
    </com:Extension>
    <uap3:Extension Category="windows.appExtension">
        <uap3:AppExtension Name="com.microsoft.commandpalette"
                           Id="YourApplicationUniqueId"
                           PublicFolder="Public"
                           DisplayName="Sample Extension"
                           Description="Sample Extension for Command Palette">
            <uap3:Properties>
                <CmdPalProvider>
                    <Activation>
                        <CreateInstance ClassId="<Extension CLSID Here>" />
                    </Activation>
                    <SupportedInterfaces>
                        <Commands />
                    </SupportedInterfaces>
                </CmdPalProvider>
            </uap3:Properties>
        </uap3:AppExtension>
    </uap3:Extension>
</Extensions>

このマニフェストでは、アウトプロセス COM サーバーを使用して、アプリとコマンド パレットの間の通信レイヤーとして機能します。 このことを心配しないでください。 テンプレート プロジェクトでは、COM サーバーの作成、COM サーバーの起動、コマンド パレットへのオブジェクトのマーシャリングが行われます。

重要な注意事項

マニフェストの例に関するいくつかの重要な要素:

  • アプリケーションでは、名前が Extensions.uap3Extension.AppExtension に設定されたcom.microsoft.commandpaletteを指定する必要があります。 これは、コマンド パレットが拡張機能を検索するために使用する一意の識別子です。
  • アプリケーションは、COM クラスをホストする Extensions.comExtension.ComServer を指定する必要があります。 これにより、OS はインスタンス化できる COM クラスとしてその GUID を登録できます。
    • この CLSID が一意であり、アプリケーション内の CLSID と一致していることを確認します。 1 つを変更する場合は、3 つすべてを変更する必要があります。
  • PropertiesAppExtensionで、CmdPalProvider要素を指定する必要があります。 ここでは、拡張機能と対話するためにコマンド パレットによってインスタンス化される COM クラスの CLSID を指定します。
    • 現時点では、Commands のみがサポートされています。