Добавляем собственный список элементов в контекстное меню 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:
Проверяю результат. Нажимаю правой кнопкой мыши на файл. В контекстном меню сверху появляется новый список "Открыть в браузере" с выбранной мной иконкой, снизу разделитель. В списке три элемента с названиями и конками браузеров.