コマンド パレットには完全な拡張モデルが用意されており、開発者はパレット用に独自のエクスペリエンスを作成できます。
拡張機能の記述を始める最も速い方法は、コマンド パレット自体から行う方法です。 [新しい拡張機能の作成] コマンドを実行し、フィールドに入力してテンプレート プロジェクトを設定するだけで、開始する準備が整います。
詳細な手順については、次のページを参照してください。
拡張機能の詳細
コマンド パレットは、拡張機能がコマンド パレットと通信する方法である WinRT API (Microsoft.CommandPalette.Extensions) を定義します。
コマンド パレットでは、パッケージ カタログを使用して、windows.appExtension
の com.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 つすべてを変更する必要があります。
-
Properties
のAppExtension
で、CmdPalProvider
要素を指定する必要があります。 ここでは、拡張機能と対話するためにコマンド パレットによってインスタンス化される COM クラスの CLSID を指定します。- 現時点では、
Commands
のみがサポートされています。
- 現時点では、
関連コンテンツ
Windows developer