Я создал расширение Windows Shell, используя ATL (Visual Studio 2008). Он имеет следующие модули, и каждый модуль представляет собой отдельный простой объект ATL со своим собственным файлом .rgs для регистрации: -
- IShellFolder / IShellView -> Для виртуального диска в проводнике Windows
- IContextMenu / IShellExtInit -> Для всплывающих меню файлов и папок
- IShellIconOverlayIdentifier - Отображение значков наложения для файлов и папок
- IShellPropSheetExt / IShellExtInit -> Для пользовательской страницы свойств в свойствах файла и папки
Вышеописанное прекрасно работает в WinXP, и я могу отлаживать это расширение оболочки в WinXP. Но как только я переключаюсь на Vista, я получаю только вызовы методов для (2) и (4). Диск создается в проводнике Windows, но основные методы не вызываются, когда я нажимаю на него.
Хотя, когда я щелкаю правой кнопкой мыши, меня вызывают (2), и когда я выбираю «Свойства» для файла или папки, я получаю код для (4).
Есть ли какой-нибудь интерфейс, который мне не хватает для (1) и (3) в Vista. Я не смог найти полную и подробную документацию по написанию Shell Extensions для Vista на MSDN. Я уже просмотрел статьи CodeProject о расширениях оболочки.