Jak mogę dodać ikonę do mojego niestandardowego elementu menu kontekstowego w systemie Windows 7?

9

Powiązane: Jak mogę dodać program do menu kontekstowego wszystkich plików?

Utworzyłem własny niestandardowy element menu kontekstowego i wydaje się, że działa on na wszystkich typach plików - nawet przez łącza skrótów. (Wybranie opcji niestandardowej powoduje wykonanie operacji na miejscu docelowym skrótu, a nie pliku .lnk.) Teraz chciałbym utworzyć ikonę, aby się wyróżniała. Mój program antywirusowy i Notepad ++ wydają się być w stanie to zrobić, więc wiem, że to możliwe. Pytanie tylko, jak?

Iszi
źródło

Odpowiedzi:

10

Otwórz regedit.exe i znajdź klucz utworzony dla niestandardowego elementu menu.

Teraz stwórz w nim nową wartość String i nazwij ją Icon. Kliknij go dwukrotnie i wprowadź ścieżkę do pliku niestandardowej ikony:

c: \ folder \ icon.ico

Opcjonalnie możesz użyć pliku shell32.dll systemu Windows, tak jak w moim przykładzie: Rejestr

Wynik:

Ikona w niestandardowym menu kontekstowym

Tylko dodatkowa uwaga - wygląda na to, że ta metoda działa w systemie Windows 7 (i prawdopodobnie Vista), ale ikona nie pojawiła się podczas testowania w systemie Windows XP.

Siim K.
źródło
Dzięki za odpowiedź i testowanie na XP. Będę musiał spróbować dzisiaj. Zauważyłem też, że twoja metoda wydaje się nieco różnić od odpowiedzi na moje poprzednie pytanie. (Zobacz link w tym pytaniu.) W poprzedniej odpowiedzi tekst pozycji menu kontekstowego jest przechowywany w nazwie klucza. W twoim jest przechowywany w wartości ciągu w kluczu. Czy jest jakiś praktyczny powód tej różnicy?
Iszi
@Iszi - nie jestem pewien, czy jest jakaś prawdziwa różnica. Właśnie znalazłem taki przykład
Siim K.
1
Wygląda na to, że masz rację, że nie działa na XP. Nie mogę wymyślić, dlaczego tak się nie stanie, ponieważ moje AV i Notepad ++ wciąż mają ikony. Wydaje się, że ich funkcje są objęte HKCR\*\shellex\ContextMenuHandlerszakresem, a ja nie mogę samodzielnie rozszyfrować, w jaki sposób działają te klucze.
Iszi
Przetestowany i działa w systemie Windows 7. Przejdę dalej i opublikuję XP jako kolejne pytanie.
Iszi
2
@ luochen1990 Jest to numer indeksu - która ikona z .dll jest używana. Oto tabela dla shell32.dll z ikonami i odpowiednimi indeksami: help4windows.com/windows_7_shell32_dll.shtml
Siim K
4

... A jeśli chcesz, możesz użyć domyślnej / tej samej ikony, której używa Twój program (plik exe).

Po prostu użyj czegoś takiego jak poniżej jako Iconwartości wartości ciągu, na którą wskazał @Slim K w swojej odpowiedzi:

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

Sublime Text 3 nie używa ikony dla opcji menu kontekstowego. Dodałem więc Iconwartość ciągu z treścią, którą widzisz na zrzucie ekranu.

1

2)

goofle
źródło
co oznacza liczba „0” podążająca ścieżką?
luochen1990
@ luochen1990, jak wspomniano w zaakceptowanej odpowiedzi Siim K., jest to numer indeksu ikony w pliku DLL. W takim przypadku zero to pierwsza ikona w bibliotece DLL. Możesz przeczytać więcej o tym systemie numeracji tutaj
Christian Sirolli,