Перейти к основному содержанию

Добавить список элементов в контекстное меню Windows

Windows

Добавляем собственный список элементов в контекстное меню Windows. Я работаю в Windows 10, но инструкция подойдёт и для других версий операционной системы Windows. Естественно, не будем пользоваться сторонними утилитами, всё сделаем через Реестр Windows.

Если вы хотите добавить одиночный элемент, то вам сюда:

Добавить элемент в контекстное меню Windows

Контекстное меню — элемент графического интерфейса операционной системы, представляющий собой список команд, вызываемый пользователем для выбора необходимого действия над выбранным объектом.

Контекстное меню Windows можно вызвать несколькими способами:

  • Правой кнопкой мыши.
  • Клавишей ≣ Menu на клавиатуре.
  • Сочетанием клавиш Shift + F10.

Как я уже сказал, для добавлять элементы в контекстное меню будем через Реестр Windows. Нажимаем Win + R и выполняем:

regedit

menu

Откроется редактор реестра.

menu

Выбор контекстного меню

Контекстное меню корзины отличается от контекстного меню файла. Поэтому сначала следует определиться, в какое контекстное меню будем добавлять элементы. В зависимости от этого, выберем для работы ветку реестра.

Контекстное меню любого файла:

\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

menu

Смотрим значение строкового параметра "(По умолчанию)". У меня это pngfile. Соответственно, нашей рабочей веткой будет:

\HKEY_CLASSES_ROOT\pngfile

menu

Рабочую ветку выбрали, теперь можно переходить непосредственно к созданию новых элементов контекстного меню. Я для примера выбрал контекстное меню любого файла:

\HKEY_CLASSES_ROOT\*\shell

menu

Добавить список элементов в контекстное меню

Добавляем список элементов в контекстное меню. Я добавлю новый список "Открыть в браузере". При наведении на него выпадет три пункта:

  • Google Chrome
  • Mozilla Firefox
  • Internet Explorer

Если пользователь нажмёт на пункт, то файл будет открыт в выбранном браузере.

Добавляем новый раздел в рабочую ветку реестра. Нажимаем правой кнопкой мышки по папке "shell", в открывшемся списке выбираем Создать > Раздел.

menu

Название раздела можно придумать любое. Я назвал "Открыть в браузере".

menu

В новом разделе создаём строковый параметр MUIVerb. Нажимаем правой кнопкой мышки по папке "Открыть в браузере", в открывшемся списке выбираем Создать > Строковый параметр.

menu

Указываем название параметра "MUIVerb".

menu

Присваиваем значение параметру MUIVerb, делаем по нему двойной щелчок. Указываем значение параметра. Данный текст будет отображаться в контекстном меню. Я пишу "Открыть в браузере".

menu

Есть и другие необязательные параметры, которые можно указать для элемента контекстного меню:

  • 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", чтобы элемент оказался вверху контекстного меню.

menu

Создаю строковый параметр Icon со значением "%SystemRoot%\System32\SHELL32.dll,135", чтобы слева от списка отобразилась выбранная мной иконка.

menu

Создаю строковый параметр SeparatorAfter, чтобы ниже списка отобразился сепаратор.

Вот что получилось:

menu

Создаём строковый параметр 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

menu

Теперь эти три раздела нужно создать. Переходим в ветку реестра:

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell

Создаём в этой ветке реестра три раздела:

  • open_in.GC
  • open_in.MF
  • open_in.IE

menu

В каждом из новых трёх разделов делаем двойной клик мышкой по параметру "(По умолчанию)". Здесь нужно указать название элемента.

  • В разделе open_in.GC пишу "Google Chrome".

  • В разделе open_in.MF пишу "Mozilla Firefox".

  • В разделе open_in.IE пишу "Internet Explorer".

menu

В каждом из новых трёх разделов создаю строковый параметр 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".

menu

Внутри 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"

menu

Вот что получилось в разделе open_in.GC:

menu

В разделе open_in.GC, подраздел command:

menu

Вот что получилось в разделе open_in.MF:

menu

В разделе open_in.MF, подраздел command:

menu

Вот что получилось в раздел open_in.IE:

menu

В разделе open_in.IE, подраздел command:

menu

Проверяю результат. Нажимаю правой кнопкой мыши на файл. В контекстном меню сверху появляется новый список "Открыть в браузере" с выбранной мной иконкой, снизу разделитель. В списке три элемента с названиями и конками браузеров.

menu

Теги

 

Похожие материалы

Удалённо завершить сеанс пользователя Windows Server 2012 R2

Случилось так, что юзер на сервере запустил Wireshark и забыл. Через несколько дней оперативка кончилась и серверу Windows Server 2012 R2 стало плохо. Попытки зайти на сервер по RDP или консоль не увенчались успехом. Удалось удалённо подключиться к управлению компьютером и в логах узнать о проблемах с оперативкой. Стало понятно, что нужно сделать юзеру LOGOFF, чтобы все запущенные приложения завершили свою работу.

Теги

The following boot-start or system-start driver(s) failed to load: i8042prt

Драйвер i8042prt для контроллера Intel 8042, который управляет клавиатурой и PS/2-совместимой мышкой. Ошибка возникает при установленной клавиатуре и мыши USB или вообще без них.

Windows Server 2016 — настройка Windows Server Backup

Настроим с нуля Windows Server Backup на сервере с операционной системой Windows Server 2016. Я хочу, чтобы сервер сам себя бэкапил. К ОС подключен диск "B", будем бэкапиться на него. Поехали.

Теги