Utworzyłem rozszerzenie powłoki systemu Windows za pomocą ATL (Visual Studio 2008). Ma następujące moduły, a każdy moduł jest oddzielnym prostym obiektem ATL z własnym plikiem .rgs do rejestracji: -
- IShellFolder / IShellView -> Dla wirtualnego napędu w Eksploratorze Windows
- IContextMenu / IShellExtInit -> Dla plików i folderów menu podręcznego
- IShellIconOverlayIdentifier - Aby wyświetlić ikony nakładek w plikach i folderach
- IShellPropSheetExt / IShellExtInit -> Dla strony właściwości niestandardowej we właściwościach plików i folderów
Powyższe działa dobrze w WinXP i jestem w staniedebuguj to rozszerzenie powłoki w WinXP. Ale gdy tylko przejdę na Vistę, dostaję tylko wywołania metod dla (2) i (4). Dysk zostanie utworzony w Eksploratorze Windows, ale podstawowe metody nie są wywoływane po kliknięciu. Chociaż po kliknięciu prawym przyciskiem myszy pojawia się polecenie (2) i wybranie „Właściwości” dla pliku lub folderu, wchodzę do kodu dla (4).
Czy brakuje mi interfejsu (1)oraz (3) w systemie Vista. Nie mogłem znaleźć pełnej i szczegółowej dokumentacji na temat pisania Rozszerzeń Shell dla Visty w MSDN. Przeglądałem już artykuły CodeProject na temat rozszerzeń powłoki.
Odpowiedzi:
1 dla odpowiedzi № 1Problem był spowodowany użyciem SMART Pointer Xml. Wystąpiły problemy, gdy wywołano na nim Release ().
Sprawdź ten link Internet Explorer ulega awarii, gdy wywoływany jest MSXML2 :: IXMLDOMDocumentPtr -> Release ()
0 dla odpowiedzi nr 2
Upewnij się, że Twoje rozszerzenia obsługująinicjalizacja poprawnie, w przeciwnym razie verclsid.exe nie pozwoli załadować rozszerzenia. verclsid.exe najpierw ładuje rozszerzenia powłoki i szybko je sprawdza, zanim wyśle do powłoki „ok” wskazując, że ładowanie rozszerzenia jest bezpieczne.
Widzieć tutaj po szczegółowe informacje na temat verclsid.exe.