Наложение значка оболочки (C #) - PullRequest
6 голосов
/ 09 мая 2009

Мне нужен метод для создания Icon Overlay для папок и файлов в Windows XP / Vista, используя C # или C ++? Есть примеры?

Спасибо, -Sean!

Ответы [ 2 ]

10 голосов
/ 09 мая 2009

Делай не делай это! Пожалуйста, пожалуйста, не надо.

Вы сломаете много приложений. Расширения оболочки не должны когда-либо использовать .net framework (или любую другую подобную среду).

Вот объяснение, почему вы не должны этого делать.

Напишите ваше расширение на C / C ++, но не на C #.

Обновление: Несмотря на то, что в .NET4 возможно иметь несколько версий фреймворка в одном процессе, он все еще не рекомендуется и не поддерживается Microsoft! См. этот пост о том, почему:

[...] Эти проблемы заставили нас официально рекомендовать - а не поддерживать - разработку внутрипроцессных расширений оболочки с использованием управляемого кода.

7 голосов
/ 09 мая 2009

Tigris ' TortoiseSVN продукт активно использует наложения значков, предоставляемые библиотекой, совместно используемой несколькими продуктами Tortoise, сами наложения пишутся на C ++, а не на C #.

Документация для проекта TortoiseOverlays объясняет, как они его используют и с какими проблемами столкнулись (имя пользователя: гость, пустой пароль), а исходный код GPL находится в Subversion репозитории (то же имя пользователя / пароль, что и выше).

Фрагмент из документации:

TortoiseOverlays регистрируется в проводнике для обработки девяти упомянутые выше состояния, то есть он регистрирует девять обработчиков наложения. Процесс проводника инициализирует обработчик TortoiseOverlays, вызывая его IShellIconOverlayIdentifier :: GetOverlayInfo (). TortoiseOverlays выглядит для зарегистрированных обработчиков оверлеев под HKLM \ Software \ TortoiseOverlays \ Statusname и называет их GetOverlayInfo (), чтобы они тоже могли инициализироваться (обратите внимание, что любой изменить на имя иконки, индекс, ... ваш обработчик перезаписан позже и не будет использоваться - это TortoiseOverlays, который обрабатывает значки сейчас). После инициализации TortoiseOverlays передает каждый вызов его метод IShellIconOverlayIdentifier :: IsMemberOf () для другого обработчики. Первый обработчик, который возвращает S_OK, определяет, является ли Значок отображается или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...