Compartilhar via


Suporte a menus de contexto herdados para aplicativos empacotados

O menu de contexto é uma das extensões de shell mais populares e úteis. Se você já estiver no Explorador de Arquivos ou na Área de Trabalho, ele reduz significativamente o número de etapas para concluir uma operação de arquivo em comparação com a abertura de um aplicativo separado.

Se seu aplicativo de área de trabalho implementa a interface IContextMenu herdada para extensões de shell, como o manipulador de menu de contexto ou o manipulador de arrastar e soltar, a extensão de shell pode não funcionar depois que você empacotar seu aplicativo. Para que o shell reconheça e registre a extensão, você precisará modificar o arquivo de manifesto do pacote. (Este recurso está disponível no Windows 11 build 22000+, que está atualmente disponível via Compilações do Windows Insider)

  • Adicione namespace com e extensão windows.comServer para sua dll shellex

    xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"

    Abaixo está um trecho de código de exemplo:

    <com:Extension Category="windows.comServer">
        <com:ComServer>
            <com:SurrogateServer DisplayName="<display-name-for-the-com-server>">
                <com:Class Id="<GUID-for-the-com-server>" Path="<path-to-the-com-server-or-dll>" ThreadingModel="STA" />
            </com:SurrogateServer>
        </com:ComServer>
    </com:Extension>
    
  • Adicione o namespace desktop9 e a extensão windows.fileExplorerClassicContextMenuHandler ou windows.fileExplorerClassicDragDropContextMenuHandler

    xmlns:desktop9="http://schemas.microsoft.com/appx/manifest/desktop/windows10/9"

    Abaixo está um trecho de código de exemplo:

    <desktop9:Extension Category="windows.fileExplorerClassicContextMenuHandler">
        <desktop9:FileExplorerClassicContextMenuHandler>
            <desktop9:ExtensionHandler Type="*" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type=".txt" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type="Directory" Clsid="<GUID-for-the-com-server>" />
        </desktop9:FileExplorerClassicContextMenuHandler>
    </desktop9:Extension>
    
    <desktop9:Extension Category="windows.fileExplorerClassicDragDropContextMenuHandler">
        <desktop9:FileExplorerClassicDragDropContextMenuHandler>
            <desktop9:ExtensionHandler Type="Directory" Clsid="<GUID-for-the-com-server>" />
            <desktop9:ExtensionHandler Type="Drive" Clsid="<GUID-for-the-com-server>" />
        </desktop9:FileExplorerClassicDragDropContextMenuHandler>
    </desktop9:Extension>
    
  • Alterar MaxVersionTested para ser maior que 10.0.21300.0

    Abaixo está um trecho de código de exemplo:

    <Dependencies>
        <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.21301.0" />
    </Dependencies>
    

Observação

Se você estiver implementando extensões de shell em vez de empacotar um aplicativo de área de trabalho existente com implementação IContextMenu herdada, sugerimos implementar a interface IExplorerCommand e usar desktop4:FileExplorerContextMenus. Consulte aqui para obter mais informações.