Windows: Значок из файла-библиотеки

В записи «Добавить в контекстное меню значок программы» я описал способ, с помощью которого можно было добавить в контекстное меню значок, чтобы кроме названия пункта меню, был ещё и её значок:
Windows: Значок из файла-библиотеки
Для одного из своих скриптов я добавил в контекстное меню файлов .exe скрытый пункт «Exit Setup Mode». Поскольку это был скрипт на PowerShell, то значок я решил взять из файла shell32.dll. Открыл это файл в программе IconsExtract, нашёл нужный значок, записал его индекс (240):
Windows: Значок из файла-библиотеки
После этого добавил этот индекс в реестр с помощью строки "C:\Windows\System32\shell32.dll",240:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\exitsetupmode]
"Extended"=""
@="Exit Setup Mode"
"icon"="\"C:\\Windows\\System32\\shell32.dll\",240"

Но я получил не тот значок, который был под индексом 240:
Windows: Значок из файла-библиотеки

Я подумал, что может индексация идёт не с 1, а с 0, поэтому вписал вместо 240 число 239… Значок изменился, но это опять был не тот, который нужен был мне.
Я всё же победил эту проблему, хотя пришлось обратиться к создателю этой утилиты.
Выяснилось, что индекс для значка нужно указывать в ОТРИЦАТЕЛЬНОМ значении. То есть в моем случае это будет «-240»:

"icon"="\"C:\\Windows\\System32\\shell32.dll\",-240"

Теперь так, как нужно:
Windows: Значок из файла-библиотеки



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments