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

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

14.12.2010 00:14,
Страницы: Пред. 1 2

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

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

раскрывающееся меню

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

В разделе реестра 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, поскольку планирую сделать меню первым пунктом и отделить его от остальных.

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

раскрывающееся меню

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

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
 
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Menu1]
"MUIVerb"="Система"
"SubCommands"="disk-menu;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="Bottom"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\regedit]
@="Редактор реестра"
"Icon"="regedit.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\regedit\command]
@="regedit.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\taskmgr]
@="Диспетчер задач"
"Icon"="taskmgr.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\taskmgr\command]
@="taskmgr.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\devmgr]
@="Диспетчер устройств"
"Icon"="devmgr.dll,4"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\devmgr\command]
@=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
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\cleanmgr]
@="Очистка диска"
"Icon"="cleanmgr.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\cleanmgr\command]
@="cleanmgr.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\defrag]
@="Дефрагментация диска"
"Icon"="dfrgui.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\defrag\command]
@="dfrgui.exe"
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\disk-menu]
"MUIVerb"="Диск"
"Icon"="imageres.dll,31"
"CommandFlags"=dword:00000040
"SubCommands"="defrag;cleanmgr"

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

Упорядочивание пунктов контекстного меню рабочего стола и компьютера

Если вы добавите в контекстное меню рабочего стола или компьютера несколько отдельных пунктов и/или раскрывающихся меню, то, возможно, у вас возникнет идея расположить их в определенном порядке. Выше я рассказывал, как задать расположение пункта в меню с помощью параметра Position. Но он влияет на позицию вашего пункта относительно стандартных (встроенных) пунктов контекстного меню, т.е. позволяет поместить пункт под ними, над ними или где-то в середине меню.

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

Меню рабочего стола

Я разберу самый сложный случай сортировки, внизу меню, где помимо своих пунктов играют роль встроенные. В меню рабочего стола у меня созданы три меню (Система, Администрирование и Стандартные программы).

У всех них задано одинаковое расположение внизу контекстного меню с помощью параметра Position.

Примечание. В меню рабочего стола упорядочивание работает только внизу (Position=Bottom) и в середине (Position отсутствует).

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

раскрывающееся меню

Чтобы изменить порядок меню, нужно прописать его в качестве значения для параметра (По умолчанию) в разделе

HKEY_CLASSES_ROOT\DesktopBackground\Shell

Дважды щелкните параметр (По умолчанию) и введите названия разделов меню в реестре в желаемом порядке через запятую:

Display,Gadgets,Personalize,WinApps,Admin,System

раскрывающееся меню

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

Меню компьютера

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

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

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

раскрывающееся меню

Если вас это не устраивает, просто удалите параметр (По умолчанию). Он будет восстановлен без значения, и пункт Открыть вернется на свое место.

Можно отсортировать пункты иначе, используя алфавитный порядок названий разделов собственных меню. Достаточно начать названия, например, с последней буквы латинского алфавита (z) и цифры, определяющей порядок пункта.

раскрывающееся меню

В принципе, этот же способ можно использовать и для сортировки меню рабочего стола.

Готовые наборы раскрывающихся меню

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

раскрывающееся меню

Для управления меню используется оболочка BS Post Installer.

раскрывающееся меню

Вы можете:

  • создать раскрывающиеся меню в контекстном меню рабочего стола или компьютера
  • выбрать, где будет располагаться каждое раскрывающееся меню: вверху, внизу или посередине контекстного меню
  • удалить любое меню, если оно вас чем-то не устроит

Скачать наборы меню

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

Страницы: Пред. 1 2
Оцените материал:  
(Голосов: 28, Рейтинг: 3.93)

Каждый вечер мы будем присылать вам одно письмо со всеми опубликованными за день материалами. Нет материалов - нет писем, просто и удобно (другие варианты).

Материалы по теме


Комментарии (1)

Вячеслав, 26.04.2013 04:03
Вам нужно авторизоваться, чтобы голосовать Вам нужно авторизоваться, чтобы голосовать

а диспетчер задач команду то какую надо ставить отметьте двоеточием! а то не понятно что вписывать туда
а диспетчер задач команду то какую надо ставить отметьте двоеточием! а то не понятно что вписывать туда