Как я могу добавить значок в свой элемент пользовательского контекстного меню в Windows 7?

9

Связанный: Как я могу добавить программу в контекстное меню всех файлов?

Я создал свой элемент пользовательского контекстного меню, и он, кажется, работает со всеми типами файлов - даже через ссылки быстрого доступа. (При выборе моей пользовательской опции выполняется операция с целью ярлыка, а не с файлом .lnk.) Теперь я хотел бы создать значок, чтобы выделить его. Моя антивирусная программа и Notepad ++, похоже, смогли это сделать, поэтому я знаю, что это возможно. Вопрос только в том, как?

Iszi
источник

Ответы:

10

Откройте regedit.exe и найдите ключ, который вы создали для пункта пользовательского меню.

Теперь создайте в нем новое строковое значение и назовите его Icon. Дважды щелкните его и введите путь к вашему файлу пользовательских значков:

C: \ папка \ icon.ico

При желании вы можете использовать файл Windows shell32.dll, как в моем примере: реестр

Результат:

Значок в пользовательском контекстном меню

Просто дополнительное примечание - похоже, этот метод работает на Windows 7 (и, вероятно, Vista), но значок не появился, когда я тестировал на Windows XP.

Сийм К
источник
Спасибо за ответ и тестирование на XP. Я должен дать этому шанс позже сегодня. Кроме того, я заметил, что ваш метод немного отличается от ответа на мой предыдущий вопрос. (См. Ссылку в этом вопросе.) В предыдущем ответе текст для пункта контекстного меню сохраняется в имени ключа. По вашему, он хранится в строковом значении в ключе. Есть ли практическая причина для разницы?
Изи
@Iszi - не уверен, есть ли какая-то реальная разница. Мне просто довелось найти такой пример
Сийм К
1
Кажется, вы правы насчет того, что это не работает на XP. Я не могу понять, почему это не так, так как мои AV и Notepad ++ все еще имеют значки. Похоже, что у них есть свои функции HKCR\*\shellex\ContextMenuHandlers, и я не могу самостоятельно разобраться, как работают эти клавиши.
Изи
Протестировано и работает в Windows 7. Я продолжу и выложу XP как еще один вопрос.
Изи
2
@ luochen1990 Это номер индекса - какой значок из .dll используется. Вот таблица для shell32.dll с иконками и соответствующими индексами: help4windows.com/windows_7_shell32_dll.shtml
Siim K
4

... И если вы хотите, вы можете использовать значок по умолчанию / тот же значок, который уже используется вашей программой (exe-файл).

Просто используйте что-то вроде ниже в качестве содержания вашего Iconстрокового значения, на которое @Slim K указал вам в своем ответе:

"C:\Path\to\YourProgram.exe",0

Sublime Text 3 не использует значок для своего пункта контекстного меню. Поэтому я добавил Iconстроковое значение с контентом, который вы видите на скриншоте.

1

2

goofle
источник
что означает число «0» после пути?
luochen1990
@ luochen1990, как указано в принятом ответе Siim K, это порядковый номер иконки в файле DLL. В этом случае номер ноль является первым значком в DLL. Вы можете прочитать больше об этой системе нумерации здесь
Кристиан Сиролли