Compartir a través de


Información general de la extensibilidad

La paleta de comandos proporciona un modelo de extensión completo, lo que permite a los desarrolladores crear sus propias experiencias para la paleta.

La forma más rápida de empezar a escribir extensiones es desde la propia paleta de comandos. Simplemente ejecute el comando "Crear una nueva extensión", rellene los campos para rellenar el proyecto de plantilla y debe estar listo para iniciarse.

Para obtener instrucciones más detalladas, puede seguir estas páginas:

Detalles de la extensión

La paleta de comandos define una API de WinRT (Microsoft.CommandPalette.Extensions), que es cómo las extensiones pueden comunicarse con la paleta de comandos.

La paleta de comandos usará el catálogo de paquetes para encontrar aplicaciones que se enumeran como windows.appExtension para com.microsoft.commandpalette.

Registro de la extensión

Las extensiones pueden registrarse en la Paleta de Comandos mediante su .appxmanifest. Por ejemplo:

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

En este manifiesto, usamos un servidor COM fuera de proceso para actuar como la capa de comunicación entre la aplicación y la paleta de comandos. ¡No te preocupes por esto! El proyecto de plantilla se encargará de crear un servidor COM para ti, iniciarlo y llevar tus objetos a la paleta de comandos.

Notas importantes

Algunos elementos importantes sobre el ejemplo de manifiesto:

  • La aplicación debe especificar un Extensions.uap3Extension.AppExtension con el Nombre establecido en com.microsoft.commandpalette. Este es el identificador único que usa la paleta de comandos para encontrar sus extensiones.
  • La aplicación debe especificar un Extensions.comExtension.ComServer para hospedar su clase COM. Esto permite que el sistema operativo registre ese GUID como una clase COM que podemos instanciar.
    • Asegúrese de que este CLSID es único y coincide con el de la aplicación. Al cambiar uno, se deben cambiar los tres.
  • En el Properties de su AppExtension, se debe especificar un elemento CmdPalProvider. Aquí es donde se especifica el CLSID de la clase COM para el que la paleta de comandos creará una instancia para interactuar con su extensión.
    • Actualmente, solo se admite Commands.