コマンド パレット拡張機能は、WinRT API を介してコマンド パレットと通信するスタンドアロンの.NET アプリケーションです。 各拡張機能は独自のプロセスで実行され、アプリ マニフェストを介してコマンド パレットに登録され、拡張機能が分離され、セキュリティで保護され、簡単にデプロイできるようになります。
このページでは、拡張機能モデルの背後にある主要な概念 (拡張機能の検出方法、コマンドとページの提供方法、構築できるエクスペリエンスの種類) について説明します。
インストールされている拡張機能をコマンド パレットで検出する方法
コマンド パレットは、Windows パッケージ カタログを使用して、コマンド パレット拡張機能として宣言するインストール済みアプリを検索します。 拡張機能は、.appxmanifestという名前のwindows.appExtensionを宣言することで、com.microsoft.commandpaletteを通じて登録します。
<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 サーバーの起動、およびオブジェクトのコマンド パレットへのマーシャリングが自動的に処理されます。
マニフェストに関する重要な注意事項
-
AppExtensionは、Nameをcom.microsoft.commandpaletteに設定する必要があります。 これは、コマンド パレットが拡張機能の検出に使用する一意の識別子です。 -
ComServer要素は、拡張機能のインスタンス化にコマンド パレットが使用する COM クラス GUID を登録します。 この CLSID が一意であり、マニフェスト内の 3 つの場所すべてで一致していることを確認します。 -
CmdPalProviderセクションのProperties要素は、コマンド パレットがインスタンス化する COM クラスの CLSID を指定します。 現時点では、Commandsのみがサポートされています。
拡張 API
コマンド パレットは、Microsoft.CommandPalette.Extensions を使用してコマンド パレットと通信する拡張機能のための WinRT API を定義します。 コンパニオン ツールキット ライブラリ (Microsoft。CommandPalette.Extensions.Toolkit) には、一般的なパターンを簡略化する基底クラスとヘルパーが用意されています。
すべての拡張機能は、IExtension インターフェイスを実装し、GetProvider メソッドを提供してICommandProviderを返します。 コマンド プロバイダーは、拡張機能が提供するコマンドとページを定義する場所です。
コマンドとページ
拡張機能では、いくつかの種類のコンテンツを提供できます。
- 最上位レベルのコマンド — コマンド パレットのホーム ページに表示され、ユーザーがすぐにアクセスできるようにするコマンド。
- フォールバック コマンド - 他の結果がユーザーのクエリと一致しない場合にトリガーされるコマンド。検索ベースまたはキャッチオール機能に役立ちます。
- コンテキスト メニュー項目 - 他のコマンドの右クリック コンテキスト メニューに表示されるその他のアクション。
各コマンドは、コンテンツを表示する ページ に移動できます。 コマンド パレットでは、次の種類のページがサポートされています。
| ページの種類 | 説明 |
|---|---|
| ページを一覧表示する | 選択可能な項目の検索可能な一覧を表示します。 |
| 詳細ページ | セクション、タグ、リンクを含むリッチ コンテンツを表示します。 |
| フォーム ページ | 対話型ワークフローのユーザー入力フィールドを表示します。 |
| マークダウン ページ | 書式設定されたマークダウン コンテンツをレンダリングします。 |
| グリッド ページ | ギャラリーまたはグリッド レイアウトで項目を表示します。 |
拡張機能では、拡張機能ごとの構成用に独自の設定ページを提供したり、 コマンドを Dock にピン留めしたりすることもできます。
概要
最初の拡張機能をビルドする準備はできましたか? 作業 の開始 に進み、プロジェクトを設定し、最初のコマンドを作成します。
関連コンテンツ
Windows developer