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

Добавить элемент в контекстное меню 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". При нажатии на него указанный файл будет открыт в браузере Google Chrome.

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

menu

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

menu

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

menu

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

menu

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

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 со значением "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", чтобы слева от элемента отобразилась иконка Google Chrome.

menu

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

menu

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

menu

Указываем название раздела "command".

menu

В новом разделе command меняем значение по умолчанию. Двойной клик мышкой по параметру "(По умолчанию)". Здесь нужно указать команду, которую нужно выполнить при выборе нашего элемента контекстного меню.

menu

Мне нужно открыть файл в браузере Google Chrome. Пишу команду:

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe "%1"

%1 — вместо этого значения будет подставляться путь к текущему файлу.

menu

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

menu

Теги

 

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

RDP-ссылка на RemoteApp в Windows Server 2012 R2

Говорят, что в Windows Server 2012 выпилили функционал по созданию rdp ярлыков на удалённые приложения. Но это не совсем так. Расскажу как сделать rdp ярлык без особых проблем. Устанавливаете приложение на сервер. Убедитесь, что входите в группу пользователей, которым доступны удалённые приложения.

Теги

Точка входа в процедуру nextafterf не найдена в библиотеке MSVCR120_CLR0400.dll

При установке программы на Windows 7 словил ошибку: Точка входа в процедуру nextafterf не найдена в библиотеке MSVCR120_CLR0400.dll. Подозреваю, что проблема в битом .NET. Попробуем вылечить.

Теги