Funktionsweise von Befehlspalettenerweiterungen

Befehlspalettenerweiterungen sind eigenständige .NET Anwendungen, die über eine WinRT-API mit Befehlspalette kommunizieren. Jede Erweiterung wird in einem eigenen Prozess ausgeführt und mit der Befehlspalette über das App-Manifest registriert, wodurch Erweiterungen isoliert, sicher und einfach bereitgestellt werden können.

Auf dieser Seite werden die Kernkonzepte des Erweiterungsmodells erläutert– wie Erweiterungen ermittelt werden, wie sie Befehle und Seiten bereitstellen und welche Arten von Erfahrungen Sie erstellen können.

Wie Befehlspalette installierte Erweiterungen erkennt

Befehlspalette verwendet den Windows-Paketkatalog, um installierte Apps zu finden, die sich selbst als Befehlspalettenerweiterungen deklarieren. Erweiterungen werden über ihre .appxmanifest registriert, indem ein windows.appExtension mit dem Namen com.microsoft.commandpalette deklariert wird.

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

Erweiterungen verwenden einen Out-of-Process COM-Server als Kommunikationsschicht zwischen Ihrer App und der Befehlspalette. Machen Sie sich keine Gedanken über die Details – das Vorlagenprojekt behandelt das Erstellen des COM-Servers, das Starten und das automatische Marshalling Ihrer Objekte in die Befehlspalette.

Wichtige Hinweise zum Manifest

  • Der AppExtension Wert muss auf Namecom.microsoft.commandpalette . Dies ist der eindeutige Bezeichner, den Befehlspalette zum Ermitteln von Erweiterungen verwendet.
  • Das ComServer-Element registriert eine COM-Klassen-GUID, die die Befehlspalette zum Instanziieren Ihrer Erweiterung verwendet. Stellen Sie sicher, dass diese CLSID eindeutig ist und mit allen drei Orten im Manifest übereinstimmt.
  • Das CmdPalProvider-Element im Properties-Abschnitt gibt die CLSID der COM-Klasse an, die die Befehlspalette instanziieren wird. Derzeit wird nur Commands unterstützt.

Die Erweiterungs-API

Befehlspalette definiert eine WinRT-API (Microsoft.CommandPalette.Extensions), die Erweiterungen für die Kommunikation mit der Befehlspalette verwenden. Eine Begleit-Toolkit-Bibliothek (Microsoft. CommandPalette.Extensions.Toolkit) stellt Basisklassen und Hilfsprogramme bereit, die allgemeine Muster vereinfachen.

Jede Erweiterung implementiert die IExtension Schnittstelle, die eine GetProvider Methode bereitstellt, die Ihre ICommandProviderZurückgibt. Der Befehlsanbieter definiert die Befehle und Seiten, die Ihre Erweiterung anbietet.

Befehle und Seiten

Erweiterungen können verschiedene Arten von Inhalten bereitstellen:

  • Befehle auf oberster Ebene – Befehle, die auf der Startseite der Befehlspalette angezeigt werden, sodass sie sofort für Benutzer zugänglich sind.
  • Fallbackbefehle – Befehle, die ausgelöst werden, wenn keine anderen Ergebnisse mit der Abfrage eines Benutzers übereinstimmen, nützlich für suchbasierte oder catch-all-Funktionen.
  • Kontextmenüelemente – Zusätzliche Aktionen, die im Kontextmenü anderer Befehle angezeigt werden.

Jeder Befehl kann zu einer Seite navigieren, auf der Inhalt angezeigt wird. Befehlspalette unterstützt die folgenden Seitentypen:

Seitentyp Beschreibung
Seiten auflisten Anzeigen einer durchsuchbaren Liste von auswählbaren Elementen.
Detailseiten Zeigen Sie umfangreiche Inhalte mit Abschnitten, Tags und Links an.
Formularseiten Präsentieren Sie Benutzereingabefelder für interaktive Workflows.
Markdownseiten Formatierten Markdowninhalt rendern.
Rasterseiten Elemente in einer Galerie- oder Rasteransicht anzeigen.

Erweiterungen können auch eigene Einstellungsseiten für die Konfiguration pro Erweiterung bereitstellen und das Anheften von Befehlen an das Dock unterstützen.

Erste Schritte

Sind Sie bereit, Ihre erste Erweiterung zu erstellen? Gehen Sie zu Erste Schritte, um Ihr Projekt einzurichten und Ihren ersten Befehl zu erstellen.