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

Le menu contextuel est l’une des extensions d’interpréteur de commandes les plus populaires et utiles. Si vous êtes déjà dans Explorateur de fichiers ou sur le Bureau, il réduit considérablement le nombre d’étapes pour effectuer 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 d’interpréteur de commandes telles que le gestionnaire de menus contextuels ou le gestionnaire de glisser-déplacer, l’extension shell peut ne pas fonctionner après avoir empaquetée votre application. Pour que l’interpréteur de commandes reconnaisse et inscrive l’extension, vous devez modifier le fichier manifeste du package. (Cette fonctionnalité est disponible sur Windows 11 build 22000+, qui est actuellement disponible via Builds Windows 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 un 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>
    
  • Modifier 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>
    

Remarque

Si vous implémentez des extensions shell au lieu d’empaqueter une application de bureau existante avec une 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, cliquez ici.