Добавляем собственный список элементов в контекстное меню Windows. Я работаю в Windows 10, но инструкция подойдёт и для других версий операционной системы Windows. Естественно, не будем пользоваться сторонними утилитами, всё сделаем через Реестр Windows.
Если вы хотите добавить одиночный элемент, то вам сюда:
Добавить элемент в контекстное меню Windows
Контекстное меню — элемент графического интерфейса операционной системы, представляющий собой список команд, вызываемый пользователем для выбора необходимого действия над выбранным объектом.
Контекстное меню Windows можно вызвать несколькими способами:
- Правой кнопкой мыши.
- Клавишей ≣ Menu на клавиатуре.
- Сочетанием клавиш Shift + F10.
Как я уже сказал, для добавлять элементы в контекстное меню будем через Реестр Windows. Нажимаем Win + R и выполняем:
regedit
Откроется редактор реестра.
Выбор контекстного меню
Контекстное меню корзины отличается от контекстного меню файла. Поэтому сначала следует определиться, в какое контекстное меню будем добавлять элементы. В зависимости от этого, выберем для работы ветку реестра.
Контекстное меню любого файла:
\HKEY_CLASSES_ROOT\*\shell
Контекстное меню папки:
\HKEY_CLASSES_ROOT\Folder\shell
Контекстное меню "Этот компьютер":
\HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell
Контекстное меню корзины:
\HKEY_CLASSES_ROOT\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\shell
Контекстное меню рабочего стола:
\HKEY_CLASSES_ROOT\DesktopBackground\Shell
Контекстное меню запоминающих устройств:
\HKEY_CLASSES_ROOT\Drive\shell
Если контекстное меню нужно вызвать не для всех файлов, а для файла с определённым расширением, например, PNG, то так тоже можно сделать. В разделе \HKEY_CLASSES_ROOT находим нужное расширение ".png":
\HKEY_CLASSES_ROOT\.png
Смотрим значение строкового параметра "(По умолчанию)". У меня это pngfile. Соответственно, нашей рабочей веткой будет:
\HKEY_CLASSES_ROOT\pngfile
Рабочую ветку выбрали, теперь можно переходить непосредственно к созданию новых элементов контекстного меню. Я для примера выбрал контекстное меню любого файла:
\HKEY_CLASSES_ROOT\*\shell
Добавить список элементов в контекстное меню
Добавляем список элементов в контекстное меню. Я добавлю новый список "Открыть в браузере". При наведении на него выпадет три пункта:
- Google Chrome
- Mozilla Firefox
- Internet Explorer
Если пользователь нажмёт на пункт, то файл будет открыт в выбранном браузере.
Добавляем новый раздел в рабочую ветку реестра. Нажимаем правой кнопкой мышки по папке "shell", в открывшемся списке выбираем Создать > Раздел.
Название раздела можно придумать любое. Я назвал "Открыть в браузере".
В новом разделе создаём строковый параметр MUIVerb. Нажимаем правой кнопкой мышки по папке "Открыть в браузере", в открывшемся списке выбираем Создать > Строковый параметр.
Указываем название параметра "MUIVerb".
Присваиваем значение параметру MUIVerb, делаем по нему двойной щелчок. Указываем значение параметра. Данный текст будет отображаться в контекстном меню. Я пишу "Открыть в браузере".
Есть и другие необязательные параметры, которые можно указать для элемента контекстного меню:
- Position (строковый параметр) — можно изменить положение элемента контекстного меню. По умолчанию элемент отображается где-то в центре.
Top — элемент вверху.
Bottom — элемент внизу. - Icon (строковый параметр) — иконка слева от элемента контекстного меню.
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe — можно указать путь к какой-либо программе, тогда будет отображаться иконка этой программы.
%SystemRoot%\\regedit.exe,0 — у программы может быть несколько иконок, можно указать порядковый номер иконки в файле, начиная с нуля
imageres.dll,275 — dll-файл с иконками и порядковый номер иконки в файле, начиная с нуля.
%SystemRoot%\\system32\\imageres.dll,82 — путь к dll-файлу с иконками и порядковый номер иконки в файле, начиная с нуля. - Extended (строковый параметр) — этот параметр делает элемент скрытым. Для отображения элемента нужно вызвать контекстное меню с зажатой клавишей Shift.
Не нужно присваивать значение, пустая строка. - SeparatorBefore (строковый параметр) — этот параметр добавляет разделитель выше.
Не нужно присваивать значение, пустая строка. - SeparatorAfter (строковый параметр) — этот параметр добавляет разделитель выше.
Не нужно присваивать значение, пустая строка.
Добавлю несколько необязательных параметров.
Создаю строковый параметр Position со значением "Top", чтобы элемент оказался вверху контекстного меню.
Создаю строковый параметр Icon со значением "%SystemRoot%\System32\SHELL32.dll,135", чтобы слева от списка отобразилась выбранная мной иконка.
Создаю строковый параметр SeparatorAfter, чтобы ниже списка отобразился сепаратор.
Вот что получилось:
Создаём строковый параметр SubCommands. Этот параметр из обычного элемента контекстного меню делает выпадающий список. Присваиваем значение параметру SubCommands, делаем по нему двойной щелчок. В качестве значение через точку с запятой указываем (придумываем) названия будущих элементов списка. В каком порядке вы напишете значения, в таком порядке выведутся элементы в выпадающем списке. Я пишу "open_in.GC;open_in.MF;open_in.IE".
Здесь перечисляются три названия будущих разделов реестра:
- open_in.GC — раздел для Google Chrome
- open_in.MF — раздел для Mozilla Firefox
- open_in.IE — раздел для Internet Explorer
Теперь эти три раздела нужно создать. Переходим в ветку реестра:
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
Создаём в этой ветке реестра три раздела:
- open_in.GC
- open_in.MF
- open_in.IE
В каждом из новых трёх разделов делаем двойной клик мышкой по параметру "(По умолчанию)". Здесь нужно указать название элемента.
- В разделе open_in.GC пишу "Google Chrome".
- В разделе open_in.MF пишу "Mozilla Firefox".
- В разделе open_in.IE пишу "Internet Explorer".
В каждом из новых трёх разделов создаю строковый параметр Icon (необязательный параметр), чтобы слева от элемента отобразилась иконка браузера.
- В разделе open_in.GC создаю строковый параметр Icon со значением "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe".
- В разделе open_in.MF создаю строковый параметр Icon со значением "C:\Program Files (x86)\Mozilla Firefox\firefox.exe".
- В разделе open_in.IE создаю строковый параметр Icon со значением "C:\Program Files\Internet Explorer\iexplore.exe".
Если нужно указать разделители сверху или снизу:
- CommandFlags (dword) — добавляет флаги. Шестнадцатеричное значение.
20 — сепаратор ниже.
40 — сепаратор выше.
Разделители мне не нужны, не указываю.
В каждом из новых трёх разделов создаём новый раздел "command".
Внутри comamnd в каждом из трёх разделов делаем двойной клик мышкой по параметру "(По умолчанию)". Здесь нужно указать команду, которую нужно выполнить при выборе нашего элемента контекстного меню.
- Для Google Chrome пишу команду:
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe "%1"
%1 — вместо этого значения будет подставляться путь к текущему файлу. - Для Mozilla Firefox пишу команду:
C:\Program Files (x86)\Mozilla Firefox\firefox.exe "%1" - Для Internet Explorer пишу команду:
C:\Program Files\Internet Explorer\iexplore.exe "%1"
Вот что получилось в разделе open_in.GC:
В разделе open_in.GC, подраздел command:
Вот что получилось в разделе open_in.MF:
В разделе open_in.MF, подраздел command:
Вот что получилось в раздел open_in.IE:
В разделе open_in.IE, подраздел command:
Проверяю результат. Нажимаю правой кнопкой мыши на файл. В контекстном меню сверху появляется новый список "Открыть в браузере" с выбранной мной иконкой, снизу разделитель. В списке три элемента с названиями и конками браузеров.
Источник:
https://internet-lab.ru/win_context_menu_add_list
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.