Funzionamento delle estensioni del riquadro comandi

Le estensioni del riquadro comandi sono applicazioni autonome .NET che comunicano con il riquadro comandi tramite un'API WinRT. Ogni estensione viene eseguita nel proprio processo e si registra con la Command Palette tramite il manifesto dell'applicazione, rendendo le estensioni isolate, sicure e facili da distribuire.

Questa pagina illustra i concetti di base del modello di estensione: come vengono individuate le estensioni, come forniscono comandi e pagine e quali tipi di esperienze è possibile creare.

Come il riquadro comandi individua le estensioni installate

La Palette dei comandi utilizza il catalogo pacchetti Windows per trovare le app installate che si dichiarano estensioni della Palette dei comandi. Le estensioni si registrano attraverso il loro .appxmanifest dichiarando un windows.appExtension con il nome 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>

Le estensioni usano un server COM out-of-process come livello di comunicazione tra l'app e la Palette dei Comandi. Non preoccuparti dei dettagli : il progetto modello gestisce la creazione del server COM, l'avvio e il marshalling automatico degli oggetti nel riquadro comandi.

Note importanti sul manifesto

  • Il AppExtension deve impostare Name su com.microsoft.commandpalette. Si tratta dell'identificatore univoco usato dalla Palette dei comandi per individuare le estensioni.
  • L'elemento ComServer registra un GUID della classe COM che la Palette dei comandi utilizza per istanziare l'estensione. Assicurarsi che questo CLSID sia univoco e corrisponda a tutte e tre le posizioni nel manifesto.
  • L'elemento CmdPalProvider nella sezione Properties specifica il CLSID della classe COM di cui Command Palette creerà un'istanza. Attualmente è supportato solo Commands.

API di estensione

Il riquadro comandi definisce un'API WinRT (Microsoft. CommandPalette.Extensions) che le estensioni usano per comunicare con il riquadro comandi. Libreria del toolkit complementare (Microsoft. CommandPalette.Extensions.Toolkit) fornisce classi di base e helper che semplificano i modelli comuni.

Ogni estensione implementa l'IExtension interfaccia, che fornisce un metodo GetProvider che restituisce il tuo ICommandProvider. Il provider di comandi è la posizione in cui si definiscono i comandi e le pagine offerte dall'estensione.

Comandi e pagine

Le estensioni possono fornire diversi tipi di contenuto:

  • Comandi di primo livello: comandi visualizzati nella home page del riquadro comandi, rendendoli immediatamente accessibili agli utenti.
  • Comandi di fallback: comandi attivati quando nessun altro risultato corrisponde alla query di un utente, utile per la funzionalità basata sulla ricerca o catch-all.
  • Voci di menu contestuale — Azioni aggiuntive visualizzate nel menu di scelta rapida di altri comandi.

Ogni comando può passare a una pagina che visualizza il contenuto. Il riquadro comandi supporta i tipi di pagina seguenti:

Tipo di pagina Descrizione
Elencare le pagine Visualizzare un elenco ricercabile di elementi selezionabili.
Pagine di dettaglio Mostra contenuto avanzato con sezioni, tag e collegamenti.
Pagine del modulo Presentare i campi di input utente per i flussi di lavoro interattivi.
Pagine Markdown Esegui il rendering del contenuto formattato in markdown.
Pagine a griglia Visualizzare gli elementi in una raccolta o in un layout a griglia.

Le estensioni possono anche fornire pagine di impostazioni personalizzate per la configurazione di ogni estensione e supportare il fissaggio di comandi al Dock.

Inizia subito

Pronto per creare la prima estensione? Passare a Introduzione per configurare il progetto e creare il primo comando.