Compartilhar via


Visão geral da extensibilidade

A Paleta de Comandos fornece um modelo de extensão completo, permitindo que os desenvolvedores criem suas próprias experiências para a paleta.

A maneira mais rápida de começar a escrever extensões é da própria Paleta de Comandos. Basta executar o comando "Criar uma nova extensão", preencher os campos para preencher o projeto de modelo e você deve estar pronto para começar.

Para obter instruções mais detalhadas, você pode seguir estas páginas:

Detalhes da extensão

A Paleta de Comandos define uma API WinRT (Microsoft.CommandPalette.Extensions), que é como as extensões podem se comunicar com a Paleta de Comandos.

A paleta de comandos usará o catálogo de pacotes para encontrar aplicativos que se listam como um windows.appExtension para com.microsoft.commandpalette.

Registrando sua extensão

As extensões podem se registrar na Paleta de Comandos usando seus .appxmanifest. Como exemplo:

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

Neste manifesto, estamos usando um servidor COM fora de processo para atuar como a camada de comunicação entre seu aplicativo e a Paleta de Comandos. Não se preocupe com isso! O projeto de modelo cuidará da criação de um servidor COM para você, iniciá-lo e enviar seus objetos para a Paleta de Comandos.

Notas importantes

Alguns elementos notáveis sobre o exemplo de manifesto:

  • O aplicativo deve especificar um Extensions.uap3Extension.AppExtension com o Nome definido como com.microsoft.commandpalette. Esse é o identificador exclusivo que a Paleta de Comandos usa para localizar suas extensões.
  • O aplicativo deve especificar um Extensions.comExtension.ComServer para hospedar sua classe COM. Isso permite que o sistema operacional registre esse GUID como uma classe COM que podemos instanciar.
    • Verifique se esse CLSID é exclusivo e corresponde ao de seu aplicativo. Se você alterar um, precisará alterar os três.
  • No Properties do seu AppExtension, você deve especificar um elemento CmdPalProvider. Aqui você especifica o CLSID da classe COM que a Paleta de Comandos instanciará para interagir com sua extensão.
    • Atualmente, há suporte apenas para Commands.