Udostępnij przez


Obsługa starszych menu kontekstowych dla spakowanych aplikacji

Menu kontekstowe jest jednym z najpopularniejszych i najbardziej przydatnych rozszerzeń powłoki. Jeśli jesteś już w Eksploratorze plików lub na pulpicie, znacznie zmniejsza liczbę kroków, aby ukończyć operację pliku w porównaniu do otwierania oddzielnej aplikacji.

Jeśli Twoja aplikacja desktopowa implementuje starszy interfejs IContextMenu dla rozszerzeń powłoki, takich jak program obsługi menu podręcznego lub program obsługi przeciągania i upuszczania, rozszerzenie powłoki może nie działać po spakowaniu aplikacji. Aby powłoka rozpoznawała i rejestrowała rozszerzenie, należy zmodyfikować plik manifestu pakietu. (Ta funkcja jest dostępna w kompilacji systemu Windows 11 w wersji 22000 lub nowszej, która jest obecnie dostępna za pośrednictwem kompilacji programu Windows Insider)

  • Dodaj przestrzeń nazw com i rozszerzenie windows.comServer dla swojej biblioteki DLL shellex.

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

    Poniżej znajduje się przykładowy fragment kodu:

    <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>
    
  • Dodaj przestrzeń nazw desktop9 oraz rozszerzenie windows.fileExplorerClassicContextMenuHandler lub windows.fileExplorerClassicDragDropContextMenuHandler.

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

    Poniżej znajduje się przykładowy fragment kodu:

    <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>
    
  • Zmień wartość MaxVersionTest na większą niż 10.0.21300.0

    Poniżej znajduje się przykładowy fragment kodu:

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

Uwaga / Notatka

Jeśli implementujesz rozszerzenia powłoki zamiast pakować istniejącą aplikację desktopową ze starszą implementacją IContextMenu, sugerujemy zaimplementowanie interfejsu IExplorerCommand i użycie desktop4:FileExplorerContextMenus zamiast tego. Więcej informacji można znaleźć tutaj .