Создание каскадных меню с ярлыками избранных приложений в контекстном меню Windows 7

Original author: Vishal
  • Translation
imageСтрашное название, но не придумал, как это сказать проще.
Собственно, сама статья:

В ходе этой статьи мы разберем как добавлять ссылки на избранные программы в контекстное меню рабочего стола Windows или «Моего компьютера».

Инструкция разделена на 2 части:

1. Создание каскадных меню в контекстном и добавление ярлыков.
2. Добавление функциональности ярлыкам путем их регистрации.

Начнем-с…

Часть 1. Создание контекстных меню и добавление ярлыков

1. Откройте редактор реестра (напишите «regedit» в строке «Выполнить» или строке поиска меню «Пуск» и нажмите Enter).

2. Перейдите в следующую ветку:

HKEY_CLASSES_ROOT\Directory\Background\shell

Если Вы хотите добавить каскадное меню в контекстое меню «Моего компьютера», тогда перейти нужно в эту ветку:

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

3. Теперь необходимо создать новый ключ реестра в разделе «Shell». Нажмите правой кнопкой мыши на ключе «Shell» и выберите «Создать -> Раздел». Дайте ему какое-то оригинальное и неподражаемое имя, например «Menu1» (без кавычек).

4. Теперь выберите только что созданный раздел «Menu1». В правой части окна нам необходимо создать 4 строковых параметра:
  1. MUIVerb
  2. SubCommands
  3. Icon
  4. Position

Параметры Icon и Position Вы можете и не создавать (они опциональны), а вот MUIVerb и SubCommands — обязательны.

MUIVerb — это имя каскадного меню, которое будет отображаться в контекстном меню. Вы можете назвать его как угодно, например, «Приложения», «Браузеры» и т.д.

SubCommands содержит список команд, разделенных точкой с запятой (;). Эти команды будут показаны в каскадном меню. Вы не можете напрямую добавить ярлык приложения. Сначала в этом списке Вам нужно дать команде имя, а после этого зарегистрировать ее согласно инструкции во 2 Части статьи.

5. Давайте проясним насчет строкового параметра «SubCommands».

Предположим, что Вы уже создали каскадное меню «Apps» (переводчику неохота самому делать скрины, поэтому он не перевел это слово), как это описано в пункте 3, и теперь Вы хотите добавить в него ярлыки Notepad (блокнота) и Calculator (калькулятора). В таком случае Вам нужно задать такое значение параметру «SubCommands»:

notepad;calc

Вы можете использовать и команды «Блокнот» и «Калькулятор», но в данном случае нужно будет использовать их во 2 части этой инструкции.

image

image

6. Параметр Icon используется для отображения иконки. В нашем примере его значение explorer.exe, поэтому у каскадного меню «Browsers» значок так горячо всеми любимого браузера.

image

7. Параметр «Position» используется для определения позиции каскадного меню в контекстном. По умолчанию это середина контекстного меню, но Вы можете выбрать значения Top (сверху) или Bottom (снизу).

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

Часть 1. Добавление функциональности ярлыкам путем их регистрации

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

1. Перейдите в следующий раздел:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell

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

В нашем примере мы использовали 2 команды: notepad и calc, поэтому нам нужно создать два ключа в разделе «CommandStore\Shell» с такими же именами.

3. После создания ключа выберите его и в правой части окна редактора реестра задайте параметру Default имя, которые Вы хотите видеть в каскадном меню. Например, введите сюда Notepad или Calculator или любую другую строку.

4. Если Вы также хотите добавить ярлыку иконку, создайте новый строковой параметр с именем icon и установите его значением путь к EXE файлу приложения или любой другой иконке. Например, чтобы показать иконку «блокнота», Вы должны задать параметру Icon значение notepad.exe

5. И теперь последний шаг! В каждом из только что созданных ключей создайте новый ключ и назовите его command.
Выберите его и в правой части окна установите значением Default путь к EXE-файлу необходимой программы. Например, если ярлык должен открывать «блокнот», то для Command должно быть установлено значение notepad.exe

image

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

Автор в оригинальном тексте приводит уже готовые reg-файлы, поэтому можно взять их за основу и сделать это все намного быстрее.

P.S. Прошу сильно не пинать — это мой первый полноценный пост на хабре.

UPD. В комментариях спрашивали про готовые reg-файлы. Добавляю.

Контекстное меню рабочего стола:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Menu1]
"MUIVerb"="Apps"
"SubCommands"="notepad;calc"
"icon"="explorer.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
@="Notepad"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\command]
@="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc]
@="Calculator"
"icon"="calc.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc\command]
@="calc.exe"


Контекстное меню «Мой компьютер»:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Menu1]
"MUIVerb"="Apps"
"SubCommands"="notepad;calc"
"icon"="explorer.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
@="Notepad"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\command]
@="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc]
@="Calculator"
"icon"="calc.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc\command]
@="calc.exe"


Примечание: Если Вы хотите удалить созданное каскадное меню, просто удалите ключи, созданные в пункте 3 первой части и пункте 2 второй части статьи.

UPD 2. Перенес топик в блог «Windows 7», поскольку, как я вижу, там такая тема популярна:)
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 44

    +8
    Отличный, и главное полезный пост! Спасибо!
      +1
      Спасибо за хороший отзыв. Если хотя бы одному человеку было полезно, то значит уже не зря писал:)
      0
      «Вон оно что, Михалыч» ©

      Спасибо… Отличный первый пост
      не думал что все так просто с иконками…
      Будем использовать)
        –2
        Автор в оригинальном тексте приводит уже готовые reg-файлы, поэтому можно взять их за основу и сделать это все намного быстрее.

        а где ссылка на оригинальную статью?
          +2
            0
            спасиб
            я уже и сам нашел)
            не очень очевидно правда ссылку расположили… [я не про Вас]
        +2
        А где готовые reg-файлы?
          0
          Удобная и просто, как раз не хватало такой вещички. Спасибо.
            0
            А как удалить Пункт из контекстного меню? например, этот

            на нажатие клавиши Delete комп ругается.
              +3
              нужно зайти в безопасность (правой кнопкой на разделе -> разрешения -> дополнительно -> выбрать себя -> поставить галку «Заменить владельца подконтейнеров и объектов -> ok -> добавить -> дополнительно -> поиск -> выбрать свой аккаунт -> ok -> ok -> поставить галку „разрешить-> полный доступ“ -> применить -> дополнительно -> нажать на аккаунте в списке -> поставить галки внизу (2 шт.) -> ok -> ok -> ok)

              Извиняюсь за подробное описание, не знал, как рассказать сжато.
                0
                Спасибо за пошаговое объяснение
                  +1
                  рад, что помог. Этот прием с безопасностью можно применять как для разделов реестра, так и для файлов и папок.
                  0
                  Огромное спасибо! А как такую фичу не удалить, а отключить (деактивировать)? В реестре как-то, наверное?
                +1
                Спасибо за статью :) Все же винду тоже можно допилить до состояние «удобно»
                  0
                  Вот если бы это можно было запихнуть в главное меню или в Quick Launch.
                  Там так не хватает возможности создать древовидное меню и распихать все по категориям…

                  Да, я знаю про True Launch Bar и аналоги… но почему это не сделают родным функционалом?
                    +6
                    Напомнило наутилус. делаешь файлы с командами, кидаешь в
                    в ~/.gnome2/nautilus-scripts или подпапки и получается разветвленное меню с твоими командами\скриптами.

                    ps. Простите что влез в тему про Windows :)
                      +4
                      Эх, не вы один такой. Сейчас получим по полной =)
                        +6
                        Отходите, я их задержу :D
                        0
                        Я ждал подобного коммента с аналогичной инструкцией для Linux :)
                        +4
                        Хм. Все красиво, все удобно, проблема только одна: почему функции, которые могут на практике оказаться такими полезными, доступны только из реестра? Можно сказать, что это аналог «постоянным переходам в консоль» для Linux.

                        Заведомо сознательно оставленная лазейка для создания коммерческого стороннего софта по «твиканию» Windows? Или же просто недосмотр?

                        Автору совет — сразу пишите приложение, которое автоматизирует этот процесс. Для домохозяек, так сказать. Забивайте рынок :)
                          +2
                          >доступны только из реестра?

                          И вовсе не только из реестра, контекстные меню можно создавать и с помощью магии COM.

                          msdn.microsoft.com/en-us/library/cc144171(v=VS.85).aspx
                            +1
                            гугл по волшебным словам context menu editor находит далеко не один вариант, чем это можно делать. Так что рынок как обычно занят.

                            А автору все равно спасибо за полезную статью как это делается руками.
                            +1
                            Спасибо за статью. Думаю, найду полезное применение таким возможностям. Однако, неплохо было бы попробовать поправить кавычки-ёлочки на простые двойные, а то хабрапарсер взял и испортил их. :)
                              +1
                              Спасибо, поправил. Просто не сразу понял, о каких кавычках шла речь:)
                                +1
                                Да, моя вина, иногда я очень «ясно» объясняю. :)
                              +1
                              Думаю цены не будет тому, кто напишет софтинку, которая будет позволять производить эти действия через юзер-френдли интерфейс :)
                                +1
                                большое спасибо автору за сэкономленное время. в моей последней статье о контекстном меню как раз спрашивали про вложенные меню. Собирался в выходные поработать над этим вариантом, а тут уже готовая статья. Кстати, на сайте Microsoft приводятся три варианта создания вложенных меню. У меня сразу заработал только первый, описанный здесь. Почитайте — http://msdn.microsoft.com/en-us/library/cc144171(VS.85).aspx.
                                Нет желания разобраться и дополнить?
                                  0
                                  Обязательно почитаю. Просто сейчас много работы — еле нашел время это перевести. Но если никто до меня не сделает, то постараюсь разобраться.
                                  Кстати, первые шаги в этом направлении брал из Ваших статей, за что большое спасибо:)
                                  0
                                  Немного не в тему, но… Подскажите plz, как закрепить в панели задач Диск С, например. Чтобы при клике открывался проводник с корнем диска, а не Библиотеки…
                                    +1
                                    просто перетащите из проводника диск С на панель задач и закрепите его там. и будет вам счастье
                                      0
                                      Ну так попробуйте ;). И потом скажите, что будет открываться по клику…
                                        +1
                                        попробовал — открывается диск C:/ Предложенный мною способ проще и следует парадигме Win7. Вам нужно щелкнуть правой кнопкой на значке на панели задач и выбрать нужную папку. Это удобно, когда таких папок несколько.
                                        Если вам нужно открытие именно по двойному клику — то сначала отсоедините проводник от панели задач (если он прикреплен). Затем в Пуск — Все программы находите ярлык Проводника и меняете в свойствах ключ запуска на %windir%\explorer.exe /n,/e,C:\
                                        Будет запускаться на диске С. После этого можно закрепить на панели задач. И будет вам счастье
                                          0
                                          Верно, по правой кнопке работает в 2 клика… А вот за рецепт — спасибо.
                                  • UFO just landed and posted this here
                                      +2
                                      А если нужно не подменю а просто ярлыки в контекстное меню добавить — то есть удобная гуи тулза: www.thewindowsclub.com/context-menu-editor-for-windows-7-vista-v-1-0-released
                                        0
                                        Интересно: а как сделать такие кнопки-стрелочки «свернуть» и «развернуть»?
                                          +1
                                          А вот интересно, можно ли подобную штуковину реализовать на маке?..
                                            0
                                            для Windows XP
                                            источник + небольшое описание
                                            сама программаSupported Operating Systems: Windows 98/Me/2000/XP/Vista/7
                                            русский язык к программе
                                              0
                                              Может я невнимательно прочитал описание, но, по-моему, она позволяет добавлять лишь предустановленные в ней команды и не может создавать каскадных меню (а именно в этом я и нашел пользу данной инструкции, поскольку tehnolog уже подробно описал в своей статье добавление пунктов в контекстное меню)
                                                0
                                                как вариант, можно заменить то, что она создает по умолчанию.
                                                  0
                                                  Я думаю, что хорошему программисту для user-friendly оболочки тут работы совсем немного. Тем более, что похожие решения уже есть. В крайнем случае, можно сделать программку, которая будет генерировать необходимые reg-файлы, ведь тут все шаблонно — просто вставить выбранные названия и пути в нужные места.
                                                  Ну а пока так…
                                                    0
                                                    можно как опцию, чтоб дополнительно сканировала установленные программы и на выбор можно было бы добавлять их в свое меню.
                                              0
                                              Знаю, что такое не очень приветствуется, но, все же, рискну.
                                              Просто очень хочется подарить брату-программисту инвайт на хабр, а статье не хватает всего 6 баллов до 100.
                                              Был бы очень благодарен:)
                                                0
                                                Отличный пост. Хотя сам я давно и крепко привык пользоваться TrueLaunchBar. Создаются те же меню на любой набор приложений в области квиклонча.
                                                dl.dropbox.com/u/2063318/truelaunchbar.jpg

                                                www.truelaunchbar.com/

                                                Only users with full accounts can post comments. Log in, please.