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


9

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

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

Ответы:


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


что означает число «0» после пути?
luochen1990

@ luochen1990, как указано в принятом ответе Siim K, это порядковый номер иконки в файле DLL. В этом случае номер ноль является первым значком в DLL. Вы можете прочитать больше об этой системе нумерации здесь
Кристиан Сиролли
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.