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

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

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

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

  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
  • для меню рабочего стола перейдите в раздел: HKEY_CLASSES_ROOT\DesktopBackground\Shell

Щелкните правой кнопкой мыши по разделу shell и выберите пункт Создать – Новый раздел. Имя для раздела можно выбрать любое, но оно обязательно должно быть латинское. Назовите его, например, Menu1. В этом разделе будут созданы следующие строковые параметры.

Параметр MUIVerb (обязательно) отвечает за название раскрывающегося меню, поэтому значение можете выбирать любое. Я назвал свое Система.

Параметр 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
 
[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Menu1]
"MUIVerb"="Система"
"SubCommands"="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

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

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

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

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


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

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

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