Prise en charge des menus contextuels hérités pour les applications empaquetées

Le menu contextuel est l’une des extensions de Shell les plus populaires et les plus utiles. Si vous êtes déjà dans l’Explorateur de fichiers ou sur le bureau, cela réduit considérablement le nombre d’étapes nécessaires à l’exécution d’une opération de fichier par rapport à l’ouverture d’une application distincte.

Si votre application de bureau implémente l’interface IContextMenu héritée pour les extensions de Shell, telles que le gestionnaire de menu contextuel ou le gestionnaire de glisser-déplacer, l’extension de Shell peut ne pas fonctionner après l’empaquetage de votre application. Pour que l’interpréteur de commandes puisse reconnaître et inscrire l’extension, vous devez modifier le fichier manifeste du package. (cette fonctionnalité est disponible sur Windows 11 build 22000 +, qui est actuellement disponible via Windows builds insider )

  • Ajouter un espace de noms com et une extension Windows. COMServer pour votre dll shellex

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

    Voici un exemple d’extrait de code :

    <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>
    
  • Ajouter l’espace de noms desktop9 et l’extension Windows. fileExplorerClassicContextMenuHandler ou Windows. fileExplorerClassicDragDropContextMenuHandler

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

    Voici un exemple d’extrait de code :

    <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>
    
  • Modifiez MaxVersionTested pour qu’il soit supérieur à 10.0.21300.0

    Voici un exemple d’extrait de code :

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

Notes

Si vous implémentez des extensions de Shell au lieu d’empaqueter une application de bureau existante avec l’implémentation IContextMenu héritée, nous vous suggérons d’implémenter l’interface IExplorerCommand et d’utiliser desktop4 : FileExplorerContextMenus à la place. Pour plus d’informations, consultez ici .