В представленной по ссылке статье нет ни слова о том, как сделать каскадное меню с ярлыками избранных приложений в контекстном меню Windows 7.
В контекстных меню рабочего стола и компьютера очень удобно иметь различные программы и инструменты для быстрого доступа. В этой статье я расскажу, как создать в контекстных меню раскрывающиеся меню, которые будут содержать собственные наборы программ и административных средств.
Для работы раскрывающегося меню нужны две составляющих:
1. команды, которые выполняются при щелчке по пункту меню 2. меню, раскрывающее список пунктов
Сначала я расскажу, как зарегистрировать в реестре собственные команды. По сравнению со способом добавления отдельных пунктов меню, о котором я рассказывал здесь, такой подход имеет два преимущества:
1. Единожды зарегистрировав команду, ее можно вызывать из любого меню, если их несколько. 2. Управление пунктами меню значительно упрощается.
Следуя простым пошаговым инструкциям, через 10 минут вы создадите собственное раскрывающееся меню, которое показано на рисунке ниже.
В конце статьи вы также найдете готовые наборы раскрывающихся меню.
Сначала мы зарегистрируем команды, которые будут выполняться при щелчке по пункту меню. Откройте редактор реестра и приступим!
Перейдите в раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell
В этом разделе создайте подразделы для каждой программы или команды, которую вы хотите видеть в меню. Названия подразделов могут быть любыми, но обязательно латинскими и без пробелов. В моем примере создается три подраздела:
regedit
taskmgr
devmgmt
В каждом из созданных подразделов дважды щелкните параметр (По умолчанию) и в качестве значения задайте имя ярлыка, которое вы хотите видеть в меню. Например, для подраздела regedit я задал имя Редактор реестра.
Если вы хотите, чтобы рядом с названием отображался значок, создайте там же строковый параметр Icon и в качестве значения укажите исполняемый файл или библиотеку с номером ресурса. Я указал regedit.exe, чтобы использовать стандартный значок редактора реестра.
Теперь задайте команду для пункта меню. В каждом разделе, который вы создали на шаге 2, создайте подраздел с именем command. Затем дважды щелкните параметр (По умолчанию) и в качестве значения укажите путь к программе.
Например, для редактора реестра я указал regedit.exe (полный путь не нужен, поскольку исполняемый файл находится в системной папке).
В реестре должна получиться такая картина:
Теперь нужно в реестре создать меню и добавить в него пункты, которые будут служить для вызова команд.
В зависимости от того, где вы хотите создать раскрывающееся меню, выберите раздел.
для меню «Компьютер» перейдите в раздел: HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell
для меню рабочего стола перейдите в раздел: <span style="color:gray">HKEY_CLASSES_ROOT\DesktopBackground\Shell
Щелкните правой кнопкой мыши по разделу shell и выберите пункт Создать – Новый раздел. Имя для раздела можно выбрать любое, но оно обязательно должно быть латинское. Назовите его, например, Menu1. В этом разделе будут созданы следующие строковые параметры:</span>
Параметр MUIVerb (обязательно) отвечает за название раскрывающегося меню, поэтому значение можете выбирать любое. Я назвал свое Система.
Параметр SubCommands (обязательно) содержит список указателей для команд, которые будут выполняться из меню. Названия указателей должны соответствовать названиям подразделов реестра, которые вы создали на шаге 2 в предыдущем разделе статьи. Разделяйте указатели точкой с запятой (;) и перечисляйте их в том порядке, в котором вы хотите видеть пункты в меню. Чтобы вам было проще понять, я приведу свой список:
regedit;taskmgr;devmgmt
Таким образом, у меня в меню будут редактор реестра, диспетчер задач и диспетчер устройств.
Параметр Icon (необязательно) задает значок для раскрывающегося меню. Можно задать путь к библиотеке (dll) и номер ресурса (значка), либо полный путь к исполняемому файлу (если он в системной папке, достаточно указать только имя). Для своего меню «Система» я задал значок imageres.dll,104 (сначала начала имя файла, а через запятую – номер ресурса).
Параметр Position (необязательно) отвечает за расположение раскрывающегося меню в контекстном меню. Вы можете задать ему значение Top (вверху) или Bottom (внизу). Если значение не задавать, раскрывающееся меню окажется в середине контекстного меню. Я расположил свое меню внизу.
Параметр Extended (необязательно) отвечает за отображение пункта в меню. Когда параметр присутствует, чтобы увидеть созданный пункт, нужно вызывать контекстное меню, удерживая нажатой клавишей SHIFT. Этому параметру не требуются значения.
Если вы хотите создать два меню, создайте раздел Menu2 и повторите шаги 3 – 7. Таких меню можно сделать сколько угодно.
Давайте посмотрим, что получилось в реестре:
Кстати, уже все готово! В контекстном меню компьютера появилось раскрывающееся меню «Система» со списком пунктов.
Если вы запутались или у вас что-то не получается, удалите созданные разделы и параметры, а затем импортируйте приведенный ниже REG-файл (он добавляет раскрывающееся меню в контекстное меню компьютера).
Теперь вы можете увидеть, какая структура должна быть в реестре.
Выше я продемонстрировал, как создать раскрывающееся меню со списком пунктов. Эти пункты тоже можно сделать раскрывающимися, т.е. возможно создание вложенных меню, как показано на рисунке ниже:
Как видите, в меню есть пункт «Диск», который в свою очередь раскрывает меню с утилитами для обслуживания диска. Он отделен от остальных пунктов разделителем, хотя это не очень хорошо видно на рисунке, поскольку пункт выделен. Дальше я расскажу, как создать такое меню на основе уже изложенного выше материала.
В разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell создайте ярлыки для двух новых пунктов (Дефрагментация диска и Очистка диска), следуя инструкциям в разделе статьи «Регистрация команд в реестре». Я назвал подразделы defrag и cleanmgr.
В том же разделе реестра создайте подраздел disk-menu (название может быть любым). Дальше все будет очень похоже на то, что вы проходили в первом разделе статьи.
В подразделе disk-menu создайте строковые параметры:
MUIVerb для названия меню, например, со значением Диск
Icon для значка меню, например со значением imageres.dll,31
SubCommands для ярлыков этого меню (в данном случае со значением defrag;cleanmgr)
Если вы хотите использовать разделитель, создайте параметр REG_DWORD с именем CommandFlags и шестнадцатеричным значением:
20 для размещения разделителя над пунктом меню
40 для размещения разделителя под пунктом меню
Я задал значение 40, поскольку планирую сделать меню первым пунктом и отделить его от остальных.
В реестре должна получиться такая картина:
Вложенное меню готово, и осталось лишь указать на него ссылку в родительском меню, как было описано в разделе статьи «Создание раскрывающегося меню и добавление в него пунктов». Следуя моему примеру, в разделе
Таким образом, раскрывающееся меню будет содержать вложенное меню disk-menu (Диск) первым пунктом, а также три отдельных пункта: Редактор реестра, Диспетчер задач и Диспетчер устройств.
Если вы запутались или у вас что-то не получается, удалите созданные разделы и параметры, а затем импортируйте приведенный ниже REG-файл.
Более глубокий уровень вложенности достигается аналогичным образом. В параметре SubCommands для вложенного меню указывается ссылка на команду в разделе CommandStore, содержащую параметры следующего уровня вложенности.</span>
Если вы добавите в контекстное меню рабочего стола или компьютера несколько отдельных пунктов и/или раскрывающихся меню, то, возможно, у вас возникнет идея расположить их в определенном порядке. Выше я рассказывал, как задать расположение пункта в меню с помощью параметра Position. Но он влияет на позицию вашего пункта относительно стандартных (встроенных) пунктов контекстного меню, т.е. позволяет поместить пункт под ними, над ними или где-то в середине меню.
Я также рассказывал, что порядок отдельных пунктов раскрывающегося меню можно задать с помощью параметра SubCommands, перечислив их там в желаемом порядке. Можно сортировать пункты раскрывающихся меню, и я покажу, как это сделать двумя различными способами.
Меню рабочего стола
Я разберу самый сложный случай сортировки, внизу меню, где помимо своих пунктов играют роль встроенные. В меню рабочего стола у меня созданы три меню (Система, Администрирование и Стандартные программы).
У всех них задано одинаковое расположение внизу контекстного меню с помощью параметра Position.
Примечание. В меню рабочего стола упорядочивание работает только внизу (Position=Bottom) и в середине (Position отсутствует).
Однако мои меню перемежаются со стандартными пунктами (Разрешение экрана, Гаджеты и Персонализация), что не очень удобно. Это происходит потому, что пункты выстраиваются в алфавитном порядке соответствующих им подразделов реестра.
Чтобы изменить порядок меню, нужно прописать его в качестве значения для параметра (По умолчанию) в разделе
HKEY_CLASSES_ROOT\DesktopBackground\Shell
Дважды щелкните параметр (По умолчанию) и введите названия разделов меню в реестре в желаемом порядке через запятую:
Display,Gadgets,Personalize,WinApps,Admin,System
Если вы хотите убрать стандартные пункты из меню, придется удалить соответствующие им разделы, но я не рекомендую этого делать, конечно.
Меню компьютера
Аналогичным способом можно изменить порядок отдельных пунктов и раскрывающихся меню в контекстном меню компьютера. С той лишь разницей, что параметр (По умолчанию) изменяется в разделе
Однако при этом в меню компьютера стандартный пункт Открыть смещается вниз и не выделяется жирным, поскольку нарушается встроенный в систему порядок пунктов меню.
Если вас это не устраивает, просто удалите параметр (По умолчанию). Он будет восстановлен без значения, и пункт Открыть вернется на свое место.
Можно отсортировать пункты иначе, используя алфавитный порядок названий разделов собственных меню. Достаточно начать названия, например, с последней буквы латинского алфавита (z) и цифры, определяющей порядок пункта.
В принципе, этот же способ можно использовать и для сортировки меню рабочего стола.
Я подготовил наборы REG-файлов, с помощью которых вы сможете создать любое из трех раскрывающихся меню (или все сразу) в контекстных меню рабочего стола и компьютера. Раскрывающиеся меню имеют один уровень вложенности.
Для управления меню используется оболочка BS Post Installer.
Вы можете:
создать раскрывающиеся меню в контекстном меню рабочего стола или компьютера
выбрать, где будет располагаться каждое раскрывающееся меню: вверху, внизу или посередине контекстного меню
удалить любое меню, если оно вас чем-то не устроит
Спасибо Spy, но к сожалению это не решение. В Windows Style Bilder можно поменять вид этого сепаратора, а вот его положение в каждом поп-апе прописывается где-то в реестре скорее всего. Знать бы где...
Пользуюсь этой прогой. Context Menu Editor for Windows 7 & Vista 1.0 »
Неплохая утиль, но она не умеет задавать параметр Position... что не очень удобно. К тому же она тоже не "дает" ответ на мой вопрос в конце заглавного поста.
добрый день!помогите плиз поставить разделитель в контекстное меню,не получается и все тут....все делаю как написано а он не появляется.....помогите пожалуйста
В связи с введением в действие Постановления Правительства Российской Федерации от 14.11.2023 № 1905 т.н. "о запрете популяризации VPN" с 1 марта 2024 года - любое обсуждение способов обхода блокировок и VPN на портале запрещено!