Partager via


Vue d’ensemble de l’extensibilité

La palette de commandes fournit un modèle d’extension complet, ce qui permet aux développeurs de créer leurs propres expériences pour la palette.

Le moyen le plus rapide de commencer à écrire des extensions provient de la palette de commandes elle-même. Exécutez simplement la commande « Créer une extension », renseignez les champs pour remplir le projet de modèle et vous devez être prêt à démarrer.

Pour obtenir des instructions plus détaillées, vous pouvez suivre ces pages :

Détails de l’extension

La palette de commandes définit une API WinRT (Microsoft.CommandPalette.Extensions), qui est la façon dont les extensions peuvent communiquer avec la palette de commandes.

La palette de commandes utilise le catalogue de packages pour trouver les applications qui s’affichent en tant que windows.appExtension pour com.microsoft.commandpalette.

Inscription de votre extension

Les extensions peuvent s’enregistrer dans la palette de commandes à l’aide de leur .appxmanifest. Par exemple :

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

Dans ce manifeste, nous utilisons un serveur COM hors processus pour agir comme couche de communication entre votre application et la palette de commandes. Ne vous inquiétez pas de ça ! Le projet de modèle s’occupe de la création d’un serveur COM pour vous, de son démarrage et du marshaling de vos objets vers la palette de commandes.

Remarques importantes

Certains éléments notables concernant l'exemple de manifeste :

  • L'application doit spécifier un Extensions.uap3Extension.AppExtension avec le Nom défini à com.microsoft.commandpalette. Il s’agit de l’identificateur unique utilisé par la palette de commandes pour rechercher ses extensions.
  • L’application doit spécifier un Extensions.comExtension.ComServer pour héberger sa classe COM. Cela permet au système d’exploitation d’inscrire ce GUID en tant que classe COM que nous pouvons instancier.
    • Assurez-vous que ce CLSID est unique et correspond à celui de votre application. Si vous en modifiez un, vous devez modifier les trois.
  • Dans le Properties de votre AppExtension, vous devez spécifier un élément CmdPalProvider. C’est là que vous spécifiez le CLSID de la classe COM que la palette de commandes instancie pour interagir avec votre extension.
    • Actuellement, seule Commands est prise en charge.