Что такое контекстное меню windows и способы его вызова

Создание раскрывающегося меню с несколькими уровнями вложенности

Выше я продемонстрировал, как создать раскрывающееся меню со списком пунктов. Эти пункты тоже можно сделать раскрывающимися, т.е. возможно создание вложенных меню, как показано на рисунке ниже.

Как видите, в меню есть пункт «Диск», который в свою очередь раскрывает меню с утилитами для обслуживания диска. Он отделен от остальных пунктов разделителем, хотя это не очень хорошо видно на рисунке, поскольку пункт выделен. Дальше я расскажу, как создать такое меню на основе уже изложенного выше материала.

  1. В разделе реестра
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell

    создайте ярлыки для двух новых пунктов (Дефрагментация диска и Очистка диска), следуя инструкциям в разделе статьи «Регистрация команд в реестре». Я назвал подразделы defrag и cleanmgr.

  2. В том же разделе реестра создайте подраздел disk-menu (название может быть любым). Дальше все будет очень похоже на то, что вы проходили в первом разделе статьи.
  3. В подразделе disk-menu создайте строковые параметры:
    • MUIVerb для названия меню, например, со значением Диск
    • Icon для значка меню, например со значением imageres.dll,31
    • SubCommands для ярлыков этого меню (в данном случае со значением defrag;cleanmgr)
  4. Если вы хотите использовать разделитель, создайте параметр REG_DWORD с именем CommandFlags и шестнадцатеричным значением:
    • 20 для размещения разделителя над пунктом меню
    • 40 для размещения разделителя под пунктом меню

Я задал значение 40, поскольку планирую сделать меню первым пунктом и отделить его от остальных.

В реестре должна получиться такая картина:

Вложенное меню готово, и осталось лишь указать на него ссылку в родительском меню, как было описано в разделе статьи «Создание раскрывающегося меню и добавление в него пунктов». Следуя моему примеру, в разделе

HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Menu1

параметр SubCommands должен принять следующий вид:

disk-menu;regedit;taskmgr;devmgmt

Таким образом, раскрывающееся меню будет содержать вложенное меню disk-menu (Диск) первым пунктом, а также три отдельных пункта: Редактор реестра, Диспетчер задач и Диспетчер устройств.

Если вы запутались или у вас что-то не получается, удалите созданные разделы и параметры, а затем импортируйте приведенный ниже REG-файл.

Windows Registry Editor Version 5.00


"MUIVerb"="Система"
"SubCommands"="disk-menu;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="Bottom"


@="Редактор реестра"
"Icon"="regedit.exe"


@="regedit.exe"


@="Диспетчер задач"
"Icon"="taskmgr.exe"


@="taskmgr.exe"


@="Диспетчер устройств"
"Icon"="devmgr.dll,4"


@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,\

63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,\

00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,\

74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,65,00,76,00,6d,00,67,00,6d,00,74,\
  00,2e,00,6d,00,73,00,63,00,00,00


@="Очистка диска"
"Icon"="cleanmgr.exe"


@="cleanmgr.exe"


@="Дефрагментация диска"
"Icon"="dfrgui.exe"


@="dfrgui.exe"


"MUIVerb"="Диск"
"Icon"="imageres.dll,31"
"CommandFlags"=dword:00000040
"SubCommands"="defrag;cleanmgr"

Более глубокий уровень вложенности достигается аналогичным образом. В параметре SubCommands для вложенного меню указывается ссылка на команду в разделе CommandStore, содержащую параметры следующего уровня вложенности.

Расширение контекстного меню для типа файла

Самый простой способ расширения контекстного меню для типа файла — с помощью реестра. Для этого добавьте подраздел оболочки под ключом progID приложения, связанного с типом файла. При необходимости можно определить команду по умолчанию для типа файла, сделав ее значением по умолчанию для подраздела оболочки .

Команда по умолчанию сначала отображается в контекстном меню. Его цель — предоставить оболочке команду, которую можно использовать при вызове ShellExecuteExecuteEx, но не указана команда. Оболочка не обязательно выбирает команду по умолчанию, если ShellExecuteExecuteEx используется таким образом. Для версий оболочки 5.0 и более поздних версий, найденных в системах Windows 2000 и более поздних версий, оболочка использует первую доступную команду из следующего списка. Если ни один из них недоступен, операция завершается ошибкой.

  • Команда открытия
  • Команда по умолчанию
  • Первая команда в реестре
  • Команда openwith

Для версий оболочки до версии 5.0 опустите третий элемент.

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

На следующем рисунке показано контекстное меню для типа MYP-файла, используемого в типах файлов и значках настройки. Теперь он имеет открытые, doit, print и printto команды в контекстном меню с doit в качестве команды по умолчанию. Контекстное меню выглядит следующим образом.

Записи реестра, используемые для расширения контекстного меню, показанного на предыдущем рисунке:

Хотя команда Open With находится над первым разделителем, она автоматически создается системой и не требует записи реестра. Система автоматически создает отображаемые имена для канонических команд, открытых и напечатанных. Так как doit не является канонической командой, ей назначается отображаемое имя «&Do It», которое можно выбрать, нажав клавишу D. Команда printto не отображается в контекстном меню, но в том числе позволяет пользователю печатать файлы, перетаскивая их на значок принтера. В этом примере %1 представляет имя файла и %2 имя принтера.

Команды можно отключить с помощью параметров политики, добавив значение SuppressPolicy в ключ команды. Задайте для параметра SuppressionPolicy значение идентификатора политики. Если политика включена, команда и соответствующая запись контекстного меню подавляются. Возможные значения идентификаторов политики см. в перечислении RESTRICTIONS .

Меню «Открыть с помощью…»

В контекстном меню всегда есть вариант «Открыть с помощью…», позволяющий выбрать программу, с помощью которой будет открыт данный файл.

Список формирует сама система, но его можно изменить с помощью реестра Windows:

  1. Вызвать строку «Выполнить» и прописать там команду «regedit»;
  2. В открывшемся окне перейти HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/Расширение/OpenWithList;
  3. В столбце Значение вызвать выпадающий список на нужной программе и выбрать «Удалить».
  • Откроется окно с перечнем программ;
  • Надо выбрать программу и кликнуть на красную точку сверху для ее удаления из перечня.

С помощью реестра также можно и добавить пункты в список:

  • Открыв его в ветке HKEY_CLASSES_ROOT\Applications, создать подраздел (его имя – имя исполняемого файла);
  • В созданном подразделе добавить shell/open/command;
  • Кликнуть 2 раза «По умолчанию» и в графе Значение прописать полный путь;
  • Перейти в ветку OpenWithList и создать именной параметр (имя должно включать 1 латинскую букву);
  • Кликнуть 2 раза по созданному параметру и указать такое же значение, как и имя исполняющего файла (п.1);
  • Выбрать параметр MRUList и кликнуть по нему 2 раза;
  • Указать в очереди букву имени созданного параметра.

Если же варианта «Открыть с…» вообще нет, то:

  1. В ветке HKEY_CLASSES_ROOT/*shellex/ContextMenuHandlers создать «Open With»;
  2. Внутри него кликнуть 2 раза «По умолчанию» и прописать {09799AFB-AD67-11d1-ABCD-00C04FC30936} в графе Значение.

После всего просто закрыть окно реестра и приступить к работе.

Контекстное меню — свои приложения ┤ч.1├

В серии из нескольких статей рассмотрим каким образом можно настроить под себя контекстное меню Windows ( ПКМ — она же правая кнопка мыши по какому-либо элементу программы или рабочего стола ) для удобства и быстрого доступа к любым нужным вам приложениям и утилитам.

Конечно операционная система Windows это не Linux и здесь не так уж и много открыто настраиваемых под себя вещей, которые были бы доступно понятны каждому. Поэтому я решил рассказать о том, как можно немного персонализировать вашу систему под вас.

Зачем оно надо

Кому как, ну а как по мне, встречал пользователей с полностью забитым ярлыками рабочим столом. Такое вызывает только ужас. Безусловно можно настроить красиво рабочий стол и сгруппировать любые значки на нём, но контекстное меню позволяет организовать доступ к нужным утилитам и программам проще, удобнее и эргономичнее.

Вы спросите, что можно закреплять самые часто используемые программы на панели задач, благо, начиная с Windows 7 это стало возможным и будете правы, однако всегда хорошо иметь альтернативу или хотя бы знать о ней.

Вперёд к делу

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

Проводить все операции будем через системный реестр. Бояться чего-либо не стоит, т.к. все последующие действия полностью безопасны при условии точного их выполнения.

Открываем реестр Windows любым удобным вам способом. Например, используем поиск, введя реестр в Windows 10. Можно так же вызвать Выполнить сочетанием Win + R и ввести там regedit . Лучше открывать программу от имени администратора.

Некоторые замечания

  1. На протяжении всей статьи я упоминал правый клик как событие для открытия контекстного меню. Не все являются правшами и не у всех выставлены стандартные настройки мыши. Но вне зависимости от этого, событие contextmenu действует именно в соответствии с настройками мыши, а не привязано жестко к именно правой кнопке.
  2. Еще один важный момент заключается в том, что мы рассмотрели только полноценные настольные веб-приложения с мышью в качестве устройства ввода. Пользователи могут пользоваться клавиатурой или мобильными устройствами, поэтому не забудьте предусмотреть альтернативные способы взаимодействия для сохранения дружественного интерфейса.

Создание базовой структуры

Откроем наш HTML-документ, накидаем шапку, контентную часть с некоторым списком задач и подвал. Я также подтяну Font Awesome и шрифт Roboto, чтобы сделать оформление немного лучше. Каждая задача должна содержать атрибут data-id, который в реальности брался бы из БД. Также каждая задача будет содержать список действий. Вот важные части разметки:

Если вы используете CodePen, можете в настройках включить автопрефиксер и подключение CSS-сброса. В противном случае придется делать все руками, если еще не автоматизировали этот процесс. Не забывайте, что наша цель — создание контекстного меню, так что обработка действий не будет реализована. А теперь давайте добавим еще немного CSS:

Полный набор стилей (да и всего остального) представлен на CodePen. А здесь будут самые важные части кода, разметки и оформления. Но давайте уже наконец приблизимся к нашему контекстному меню.

Набросаем наше контекстное меню — разметка

  1. Просмотр задачи.
  2. Редактирование задачи.
  3. Удаление задачи.
  1. Мы хотим, чтобы контекстное меню появлялось там, где был выполнен правый клик, то есть ему нужно абсолютное позиционирование. Поэтому не стоит его разметку помещать в контейнер с относительным позиционированием.
  2. Нам потребуются какие-нибудь переменные или атрибуты, чтобы можно было определить, к какой задаче относится выбранное действие.
  • Барбара готэм кто она

      

  • Crusader kings 3 royal edition что входит

      

  • Сколько в реальной жизни стоит мерседес

      

  • Сталкер тайные тропы 2 где найти танкиста

      

  • Как сделать голос комбайна из half life 2

CCleaner

CCleanerненужные файлыменеджера запуска

Прежде чем удалять какие-либо записи, мы должны отметить, что CCleaner не позволяет вам добавлять новые записи. Поэтому мы настоятельно рекомендуем вам использовать опцию отключения вместо удаления. Стоит отметить, что вы увидите изменения в режиме реального времени, поэтому нет необходимости сохранять конфигурацию, чтобы применить изменения.

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

Использование реестра Windows

Способ считается удобным и надежным по сравнению с ранее упомянутыми приложениями и инструментами. Задача выполняется по пошаговому алгоритму:

  1. Производится запуск каталога Виндовс — через одновременное нажатие на кнопки «Windows» и «R», введение команды «regedit».
  2. Затем прописывается путь для поисков элементов КМ и удаления ненужных: «Computer \HKEY_CLASSES_ROOT\* \shell and Computer\HKEY_CLASSES_ROOT\* \shellex».
  3. Перед началом операции необходимо создать резервную копию системы через «файл», блок «экспорта», с перемещением в «сохранение» — для восстановления достаточно кликнуть по «импортировать».

Любой из объектов КМ прописывается в перечне операционной системы. Лучший подход для корректировки — это применение указанного редактора, но выполнение требует наличия специальных знаний. В противном случае ОС будет нанесен серьезный ущерб.
Запуск редактора реестра

Команды контекстного меню

Каждая команда в контекстном меню определяется в реестре по его команде. Эти команды аналогичны тем, которые используются ShellExecuteExecuteEx при запуске приложений программным способом. Дополнительные сведения об использовании ShellExecuteExecuteEx см. в разделе «Обсуждение запуска приложений».

Команда — это простая текстовая строка, используемая оболочкой для идентификации связанной команды. Каждая команда соответствует командной строке , используемой для запуска команды в окне консоли или пакетном файле (.bat). Например, команда открытия обычно запускает программу для открытия файла. Ее командная строка обычно выглядит примерно так:

«%1» — это стандартный заполнитель для параметра командной строки, предоставленного с именем файла. Например, он может указать определенную страницу, отображаемую в представлении с вкладками.

Примечание

Если любой элемент командной строки содержит или может содержать пробелы, он должен быть заключен в кавычки. В противном случае, если элемент содержит пробел, он не будет правильно анализироваться. Например, «My Program.exe» запустит приложение должным образом. Если вы используете my Program.exe, система попытается запустить «My» с «Program.exe» в качестве первого аргумента командной строки. Всегда следует использовать кавычки с такими аргументами, как «%1», развернутыми в строки оболочки, так как вы не можете быть уверены, что строка не будет содержать пробел.

Команды также могут иметь связанную с ними строку отображения , которая отображается в контекстном меню вместо самой строки команды. Например, строка отображения для openas — Open With. Как и обычные строки меню, включая амперсанд (&) в отображаемой строке, можно выбрать клавиатуру команды.

Канонические команды

Как правило, приложения отвечают за предоставление локализованных строк отображения для определяемых ими команд. Однако для обеспечения степени независимости языка система определяет стандартный набор часто используемых глаголов, называемых каноническими командами. Каноническая команда может использоваться с любым языком, и система автоматически создает правильно локализованную строку отображения. Например, строка отображения открытой команды будет иметь значение Open в английской системе и Öffnen в немецкой системе.

К каноническим командам относятся:

Значение Описание
open Открывает файл или папку.
opennew Открывает файл или папку в новом окне.
print Выводит файл.
обзор Открывает Windows Explorer с выбранной папкой.
поиск Открывает диалоговое окно поиска Windows с папкой, заданной в качестве расположения поиска по умолчанию.
openas Открывает диалоговое окно «Открыть с помощью «.
properties Открывает страницу свойств объекта.

Команда printto также является канонической, но никогда не отображается. Он позволяет пользователю печатать файл, перетаскивая его в объект принтера.

Расширенные команды

Когда пользователь щелкает объект правой кнопкой мыши, контекстное меню содержит все обычные команды. Однако в контекстном меню могут быть команды, которые вы хотите поддерживать, но не отображались в каждом контекстном меню. Например, можно использовать команды, которые обычно не используются или предназначены для опытных пользователей. По этой причине можно также определить одну или несколько расширенных команд. Эти команды также являются символьными строками и похожи на обычные команды. Они отличаются от обычных глаголов по способу их регистрации. Чтобы иметь доступ к командам, связанным с расширенными командами, пользователь должен щелкнуть правой кнопкой мыши объект при нажатии клавиши SHIFT. Затем расширенные команды будут отображаться вместе с обычными командами.

Как настроить контекстное меню

Редактировать данный выпадающий список рекомендуется с использованием встроенных инструментов. Отчасти эта рекомендация объясняется тем, что внесение подобных изменений может негативно сказаться на работе Windows 10. Использование встроенных инструментов позволяет в случае возникновения сбоев откатить систему в предыдущее состояние.

Сторонние программы для редактирования списка не всегда эффективны. А некоторые подобные приложения содержат вирусы.

При такой настройке необходимо точно прописать соответствующие команды там, где это нужно. Из-за ошибок в коде отредактировать списки не удастся.

Убираем пункты из контекстного меню

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

Сделать это можно несколькими способами. Чтобы изменить список меню, нужно:

  • Запустить соответствующее приложение.
  • Перейти в раздел с настройками (установками и так далее — все зависит от особенностей программы).
  • Открыть вкладку, на которой будет приведен список с итерациями с оболочкой операционной системой.
  • Снять флажок напротив строчки типа «Вложенные контекстные меню».

Но этот вариант не подходит для некоторых приложений, в настройках которых отсутствует указанный путь. В подобных случаях нужно отредактировать реестр Windows.

Редактирование при помощи реестра

Редактор реестра применяется для внесения изменений в корневые процессы Window

То есть проводить манипуляции с этим инструментом необходимо осторожно. Прежде чем приступать к редактированию, рекомендуется создать новую точку сохранения системы, чтобы потом, при возникновении ошибок, откатить Windows назад

Чтобы удалить пункт из контекстного меню через реестр, нужно сочетанием клавиш «Win» и «R» вызвать диалоговое окно, в котором нужно прописать «regedit». Затем в новом разделе нужно найти запись меню, которую необходимо удалить.

Сначала поиск следует вести с раздела HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\. После этого нужно перейти на директории:

  • HKEY_CLASSES_ROOT\AllFileSystemObjects\ShellEx\ContextMenuHandlers
  • HKEY_CLASSES_ROOT\*\shell
  • HKEY_CLASSES_ROOT\Directory\Background\shell
  • HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers
  • HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers\
  • HKEY_CLASSES_ROOT\Directory\shell

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

Как убрать пункты с помощью специальных утилит

Для удаления пунктов применяются следующие бесплатные утилиты:

  • Easy Context Menu;
  • Filemenu Tools;
  • Right Click Enhancer.

Для настройки меню с помощью первой утилиты нужно:

  • Запустить программу и перейти в раздел «Редактор списка команд».
  • Открыть раздел «Чистка контекстного меню».

Выбрать пункт для удаления из появившегося списка.

Вторая программа отличается расширенным функционалом, позволяющим вносить тонкие настройки. Третье приложение не отличается от первого. Недостаток таких утилит заключается в том, что эти программы периодически не сохраняют внесенные настройки. Поэтому редактировать контекстное меню приходится несколько раз.

Добавляем пункты в контекстное меню с помощью утилиты

Отредактировать меню можно путем добавления новых пунктов. Сделать это можно, задействовав приведенные выше утилиты. Для добавления нового элемента необходимо через раздел «Файл» запустить редактор списка команд. В утилите Easy Context Menu последний запускается сочетанием клавиш «Ctrl» и «E».

В новом разделе нужно нажать на «Добавить команду». В открывшемся окне необходимо найти файл с расширением .exe, который запускает приложение. В завершении следует сначала сохранить, а затем — применить внесенные изменения.

Избавляемся от хлама в меню

Уборку контекстного меню можно провести вручную через реестр, однако задача эта нетривиальна, поскольку записи разбросаны по разным местам. Кроме того, далеко не всегда легко идентифицировать подходящий ключ реестра. К примеру, драйверы Intel регистрируются через сокращение «igfx». Записи в реестре рассеяны по ветке «HKEY_CLASSES_ROOT» в папках «shell» или «shellex», где содержится папка под названием «ContextMenuHandlers», также включающая в себя отдельные параметры.

Бесплатная утилита ShellExView составит единый список всех этих строчек реестра. Даже на относительно свежей системе их количество может превышать 250. Чтобы в них не потеряться, после запуска программы записи следует сначала отсортировать. Дело пойдет на лад, если щелкнуть в верхней части окна по строчке «type». Таким образом вы сразу же увидите все возможные записи в реестре, относящиеся, например, к «Context Menu». Но будьте внимательны: вместе с ними утилита отобразит строчки из Windows Shell, к которым лучше не прикасаться.

Сортировку можно провести и по параметру «Company». В этом случае результаты будут располагаться в алфавитном порядке — созданные системой и обозначенные как «Microsoft» записи легко отличить от остальных. Вы можете здесь, к примеру, выделить соответствующий «igfxDTCM Module» и отключить его кликом по красной точке вверху на панели ­меню. После этого запись о (практически бесполезных) графических параметрах драйвера Intel исчезнет из контекстного меню. Однако для применения системой таких настроек необходимо сначала выйти из системы, а затем снова зайти. Как вариант, вы можете через Диспетчер задач отключить «explorer.exe», а затем снова вызвать эту службу.

Документировать выявленные потребности

Ключевая практика, которая сильно недооценивается. Очень часто донесение потребностей до команды ограничивается устным разговором и остается только в головах у тех, кто принимал в нем участие. Дело усугубляется тем, что каждый участник мог понять всё по-своему и в таком искаженном виде донести информацию до других членов команды.

Документирование позволит:

  • Лучше понять эти самые потребности: когда перед глазами есть текст, то гораздо проще найти в нем ошибки, логические неточности, сформировать вопросы, про которые не подумал в первый раз, подвергнуть формальному анализу — об этом почти вся остальная часть статьи. Когда этот текст находится у тебя «в голове» в виде неструктурированного и часто «аморфного» ощущения, то такой анализ сделать практически невозможно.

  • Лучше коммуницировать с командой: когда есть текст, то любой участник может точно так же найти в нем неточности и задать вопросы. Одна голова хорошо, а несколько — лучше :)

  • Быстрее подключать к проекту новых людей.

  • Валидировать решение: понять, что реализованная функциональность решает то, ради чего она задумывалась.

Это трудоемкий процесс, но пренебрегать этим не стоит, особенно в сложных проектах. Просто начните документировать «как можете», а дальше улучшайте с помощью описанных ниже практик. Например, проверяйте через верхнеуровневый чек-лист, про который будет написано ниже.

Дополнительные материалы по теме:

  • Статья «Не пишешь = не думаешь. Мышление письмом/моделированием»

  • Книга «Как делать полезные заметки»

Готовим страницу

В предыдущем проекте мы на страницу добавили только пустой блок, а всё остальное делали через скрипт. Это не очень удобно — если нужно добавить или убрать какие-то элементы, надо идти в скрипт и править всё там. На этот раз сделаем иначе — сверстаем контекстное меню как часть страницы, а потом в скрипте скроем его.

Чтобы меню получилось красивым, сразу подключим новый шрифт и нормализатор — он уберёт всё лишнее оформление в браузерах и позволит нам настраивать внешний вид по своему усмотрению.

Наполним наше меню и используем для этого список, как и прошлый раз. Но если тогда мы делали единое меню, то сейчас добавим разделы — они будут отделяться друг от друга и группировать по смыслу разные пункты меню. Для этого добавим к каждому такому списку класс . Внутрь этого списка мы сложим все элементы нашего меню, причём у каждого элемента списка будет класс — так мы сможем настраивать внешний вид всех элементов.

А теперь сложная часть: каждый пункт меню сделаем кнопкой — так мы сможем легко обрабатывать нажатия и группировать визуальные элементы в меню. Сначала в кнопку мы положим иконку c помощью тега — он устанавливает курсивное начертание текста, но текста в нём не будет, только иконка. После этого мы пишем название кнопки и закрываем тег кнопки. 

Чтобы было понятнее, разберём первый элемент максимально подробно:

На странице появились две кнопки со стандартным оформлением — это нормально, потому что мы ещё не настраивали стили. Но на кнопках нет иконок, которые мы прописывали в теге <i>, — а всё потому, что браузер ничего не знает про эти иконки и откуда их брать. Чтобы это исправить, используем js-библиотеку иконок Feather, которая работает так:

  1. Мы на странице указываем название иконки, которую хотим получить, с помощью свойства data-feather, например data-feather=»edit-2″
  2. Потом подключаем библиотеку на странице:  <script src=’https://unpkg.com/[email protected]/dist/feather.min.js’></script>
  3. А затем подключаем свой скрипт script.js и в нём пишем команду:feather.replace();
  4. Эта команда находит на странице все ссылки на иконки и меняет их на SVG-картинки.

Сделаем всё это и посмотрим на результат:

Точно так же, по разделам, сделаем всё остальное меню. Единственное, что нам понадобится дополнительно — это новый список с классом «menu-sub-list» для вложенного меню. Читайте комментарии в коде, чтобы было проще понять, что происходит на странице:

У нас есть все пункты меню, но на контекстное меню это совсем не похоже. Исправим это с помощью стилей

Создание раскрывающегося меню и добавление в него пунктов

Теперь нужно в реестре создать меню и добавить в него пункты, которые будут служить для вызова команд.

  1. В зависимости от того, где вы хотите создать раскрывающееся меню, выберите раздел.
    • для меню «Компьютер» перейдите в раздел:
      HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell
    • для меню рабочего стола перейдите в раздел:
      HKEY_CLASSES_ROOT\DesktopBackground\Shell
  2. Щелкните правой кнопкой мыши по разделу shell и выберите пункт Создать – Новый раздел. Имя для раздела можно выбрать любое, но оно обязательно должно быть латинское. Назовите его, например, Menu1. В этом разделе будут созданы следующие строковые параметры.
  3. Параметр MUIVerb (обязательно) отвечает за название раскрывающегося меню, поэтому значение можете выбирать любое. Я назвал свое Система.
  4. Параметр SubCommands (обязательно) содержит список указателей для команд, которые будут выполняться из меню. Названия указателей должны соответствовать названиям подразделов реестра, которые вы создали на шаге 2 в предыдущем разделе статьи. Разделяйте указатели точкой с запятой (;) и перечисляйте их в том порядке, в котором вы хотите видеть пункты в меню. Чтобы вам было проще понять, я приведу свой список:
regedit;taskmgr;devmgmt

Таким образом, у меня в меню будут редактор реестра, диспетчер задач и диспетчер устройств.

Параметр Icon (необязательно) задает значок для раскрывающегося меню. Можно задать путь к библиотеке (dll) и номер ресурса (значка), либо полный путь к исполняемому файлу (если он в системной папке, достаточно указать только имя). Для своего меню «Система» я задал значок imageres.dll,104 (сначала начала имя файла, а через запятую – номер ресурса).
Параметр Position (необязательно) отвечает за расположение раскрывающегося меню в контекстном меню. Вы можете задать ему значение Top (вверху) или Bottom (внизу). Если значение не задавать, раскрывающееся меню окажется в середине контекстного меню. Я расположил свое меню внизу.
Параметр Extended (необязательно) отвечает за отображение пункта в меню. Когда параметр присутствует, чтобы увидеть созданный пункт, нужно вызывать контекстное меню, удерживая нажатой клавишей SHIFT. Этому параметру не требуются значения.

Если вы хотите создать два меню, создайте раздел Menu2 и повторите шаги 3 – 7. Таких меню можно сделать сколько угодно.

Давайте посмотрим, что получилось в реестре.

Кстати, уже все готово! В контекстном меню компьютера появилось раскрывающееся меню «Система» со списком пунктов.

Если вы запутались или у вас что-то не получается, удалите созданные разделы и параметры, а затем импортируйте приведенный ниже REG-файл (он добавляет раскрывающееся меню в контекстное меню компьютера).

Windows Registry Editor Version 5.00


"MUIVerb"="Система"
"SubCommands"="regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="Bottom"


@="Редактор реестра"
"Icon"="regedit.exe"


@="regedit.exe"


@="Диспетчер задач"
"Icon"="taskmgr.exe"


@="taskmgr.exe"


@="Диспетчер устройств"
"Icon"="devmgr.dll,4"


@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\

00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6d,00,6d,00,\

63,00,2e,00,65,00,78,00,65,00,20,00,2f,00,73,00,20,00,25,00,53,00,79,00,73,\
  00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,\

74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,65,00,76,00,6d,00,67,00,6d,00,74,\
  00,2e,00,6d,00,73,00,63,00,00,00

Теперь вы можете увидеть, какая структура должна быть в реестре.

Регистрация команд в реестре

Сначала мы зарегистрируем команды, которые будут выполняться при щелчке по пункту меню. Откройте редактор реестра и приступим!

  1. Перейдите в раздел
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell

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

  • regedit
  • taskmgr
  • devmgmt

В каждом из созданных подразделов дважды щелкните параметр (По умолчанию) и в качестве значения задайте имя ярлыка, которое вы хотите видеть в меню. Например, для подраздела regedit я задал имя Редактор реестра.
Если вы хотите, чтобы рядом с названием отображался значок, создайте там же строковый параметр Icon и в качестве значения укажите исполняемый файл или библиотеку с номером ресурса. Я указал regedit.exe, чтобы использовать стандартный значок редактора реестра.
Теперь задайте команду для пункта меню. В каждом разделе, который вы создали на шаге 2, создайте подраздел с именем command. Затем дважды щелкните параметр (По умолчанию) и в качестве значения укажите путь к программе. Например, для редактора реестра я указал regedit.exe (полный путь не нужен, поскольку исполняемый файл находится в системной папке).

В реестре должна получиться такая картина:

Работаем с реестром

При работе с Реестром Windows нужно быть очень внимательным. Чтобы оказаться в реестре нужно в меню «Пуск» задать поиск, набрав «regedit», и запустить найденный исполняющий файл «regedit.exe»:

Создаём копию

Перед редактированием Реестра любой версии Виндовс (в том числе и Windows 7) не забываем для подстраховки создавать его резервную копию. Для этого в редакторе нужно на вкладке «Файл» выбрать команду «Экспорт». Избрать «Весь реестр» внизу открывшегося диалога. Присвоив имя и указав место — «Сохранить»:

Если случится непоправимое (особенно для неопытного человека) вернуть реестр в прежнее состояние можно по команде «Файл»/«Восстановить», указав ранее созданный резервный файл.

Сам реестр выглядит древовидной блок-схемой (в левой части), каждая из веток которого имеет свои параметры (справа). За контекстное меню папок отвечают ветки «shell», «Shellex ContextMenuHandlers» и «Folder\shell» каталога «HKEY_CLASSES_ROOT\ Directory». Подробнее рассмотрев указанные ветки, можно убедиться, что папка «shell» вбирает в себя верхнюю часть контекстного набора, а «Shellex ContextMenuHandlers» — нижней. Папка же «Folder\shell» — повторяет предыдущую.

Удаление программных элементов из набора производится в каждой из веток. По правой мышке выделяется элемент удаления, вызывается команда «Удалить»:

Теперь для файлов

Здесь используется та же процедура, но в других ветках. Так как за набор команд Context Menu для файлов отвечают ветки «*/shellexContextMenuHandlers» и «*/shell» в разделе реестра «HKEY_CLASSES_ROOT»:

Процедура удаления совершенно аналогична. Не забываем только удалять ненужное в обеих ветках.

Передать на устройство (воспроизвести на устройстве)

Пункт «Передать на устройство» может быть полезен для передачи контента (видео, изображений, аудио) на бытовой телевизор, аудио-систему или другое устройство по Wi-Fi или LAN при условии поддержки устройством воспроизведения по DLNA.

Open Shell — установка в Windows 10 меню пуск от Windows 7 и вместо Classic Shell

Если этот пункт вам не нужен, то:

  1. Запустите редактор реестра.
  2. Перейдите к разделу HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Shell Extensions
  3. Внутри этого раздела создайте подраздел с именем Blocked (если он отсутствует).
  4. Внутри раздела Blocked создайте новый строковый параметр с именем {7AD84985-87B4-4a16-BE58-8B72A5B390F7}

После выхода и повторного входа в Windows 10 или после перезагрузки компьютера пункт «Передать на устройство» пропадет из контекстного меню.

Установить в Windows 10 меню пуск от Windows 7

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: