Как изменить имя обработчика наложения иконок Sharpshell в реестре на пробел перед именем?
В качестве примера я создал обработчики наложения значков, используя sharpshell: - http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers
Мой обработчик Sharpshell
[ComVisible(true)]
[DisplayName(" Test")]
public class SyncedIconOverlayHandler : SharpIconOverlayHandler
{
...
}
Мой вопрос: я хочу изменить имя обработчика, чтобы оно содержало пробел перед именем, поэтому мой обработчик будет иметь приоритет перед Dropbox и Google Drive.
4 ответа
Речь идет не о создании наложения, а о порядке сортировки, который используется в списке идентификаторов наложения. Чтобы изменить место, где отображается ваше имя, вам нужно изменить имя вашего идентификатора, чтобы оно начиналось с буквы до D, поскольку DropboxExt1 является первым элементом. Так что вместо ОС с помощью " Test"
Дайте ему другое имя.
Использование пробела - не лучший способ. Хороший подход для этого состоит в том, чтобы начать имя с подчеркивания _
символ, который появится в списке перед буквой A. это гарантирует, что он останется в начале, если будут добавлены какие-либо будущие идентификаторы.
Вы можете, как вы знаете, добавлять к имени пробелы, чтобы отсортировать наложение поверх других - многие обычные наложения значков делают, например, Google Drive, Dropbox и Tortoise SVN.
Приоритет сортировки заключается в том, что отображаются только первые 15 отсортированных номеров - ограничение в Windows, начиная с Windows 95! (И все же дело сегодня в Windows 10). Если вы конкурируете, например, с Google Диском, и оба ваших оверлея значков находятся в топ-15, вам нужно вернуть номер с более низким приоритетом, чем в SharpShell, переопределив GetPriority()
, Если вы оба возвращаете один и тот же приоритет, возможно, будет показан последний вариант сортировки? Должен был бы проверить..
Использование _, как предлагали другие, - это не путь, а сортировка после пробела.
Что вы хотите сделать - указать имя программно, а не редактировать реестр вручную, не предоставляется SharpShell - у меня та же проблема, поэтому я собираюсь попытаться добавить attirbute, который делает именно это, обновит это, когда я это сделаю.
Как насчет использования
[RegistrationName(" Test")]
Это работает для меня.