Создание каскадного меню [утилита Cascade Menu Creator]

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,813
Реакции
6,592
Нужна помощь в создании скрипта.
А давайте сочиним такое в дополнение к теме о твиках.

Осн. идея:
Автоматическое добавление пункта в группу контекстного меню файла, используя это же меню.

Вы можете с минимальными усилиями организовать себе нечто:
Add_to_Context.png

Техзадание на примере:

Запускаем батник (в перспективе графический интерфейс).

Этап 1. Установка
У нас спрашивают:
- "Как назвать главную группу* в контекстном меню файлов?".
- "Добавить группу для всех типов файлов?"

Что происходит:
Мы назвали свою группу "MyTools".
В группе "My Tools" будет пункт "Добавить новый глагол в группу".

*Под группой подразумевается аналог контекстного пункта, как "Создать" (прим., "создать ярлык") со всплывающим меню.
Почему работаем с группой? - Чтобы не засорять основное контекстное меню редко используемыми пунктами.

Этап 2. Использование.

Практический пример

1. Нужно получить быстрый доступ к ветке реестра
HKCU\Software\Microsoft\Windows\CurrentVersion\Run по правому клику на любом файле, или по тексту, скопированному в буфер обмена:

А) Качаем утилиту Sysinternals RegJump.
Распакуем,
копируем в Program Files, чтобы не потерялась (c:\program Files\RegJump\RegJump.exe)

Б) Правый клик по RegJump.exe -> My Tools -> Добавить в группу...
Появляется консоль с вариантами на Ваш выбор:

Вопрос 1: (можно организовать отдельными пунктами.)
1. Добавить меню.
2. Удалить меню.
3. Добавить новую подгруппу.

=== Создаю новый пункт контекстного меню ====
Вопрос 2:
Введите имя для меню ...
Reg -> CurrentVersion\Run

Вопрос 3:
Выберите функцию для меню:

1. Открыть этот файл с помощью... RegJump.exe
2. RegJump.exe "Буфер обмена"
3. RegJump.exe + свой ключ
4. RegJump.exe
5. Другое: введите свою команду.

Мы выбираем п.3. Нас приглашают:
"c:\program files\regjump\regjump.exe" (здесь ожидает курсор)
Дописываем "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" -accepteula

Вопрос 4:
Готов создать меню
Имя: "Reg -> CurrentVersion\Run"
Ком. строка: "c:\program files\regjump\regjump.exe" "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" -accepteula

1. Создать.
2. Исправить.

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

Koza Nozdri, Кирилл поможешь с параметрами реестра и правильной терминологией?
А еще - можно ли вообще создавать подгруппу в группе?
 
Последнее редактирование:
Dragokas, конечно!
Я щас ответ в практике дам и сделаем-либо сегодня либо завтра вечером.
Все это возможно-о чем ты пишешь,но нужна будет помощь с кодом vbs.

И еще:

Почему работаем с группой? - Чтобы не засорять основное контекстное меню редко используемыми пунктами.
Создав группу мы убъем существующую группу если она есть.
Тут либо заменять либо создать меню которое не зметно для юзера появится вместо контексного меню.
Во нифига себе чего я щас придумал-это будет отличная альтернатива классическому контексному меню,щас ответ дам пару экспериментов проведу и отпишусь.
 
Последнее редактирование:
Насчет двойного раскрывающегося меню:можно создавать не удаляя прежний пункт.
Давай начнем с вин 7.

1)работаем только с меню рабочего стола или файлы и папки тоже?
2)сделай плиз какой нибудь vbs с диалогом с подавлением окна выполнения скрипта
 
Последнее редактирование:
Dragokas, попробуй твик и посмотри правильно ли я понял что делать
Посмотреть вложение 3.rar

Если оно то доработаем и будет работать.

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

Вложения

  • 3.rar
    832 байт · Просмотры: 5
Кирилл, ты молодец. Лаконично расписал Reg-файл. Я разберусь.
Но нужно еще чтобы меню появлялось и в случае правого клика на любом файле/папке, а не только в пустое место рабочего стола.
При этом моему запускаемому скрипту передавался бы полный путь к объекту, который мы тацнули мышей (при выборе п. "Добавить меню...").

Добавлено через 3 минуты 16 секунд
Расшифруй, пожалуйста, флаг:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\DelPunkt]
"MUIVerb"="Удаление пунктов..."
"Icon"="Explorer.exe"
"CommandFlags"=dword:00000040
"SubCommands"="Punctor;NoPunctor"
 
Последнее редактирование:
и в случае правого клика на любом файле/папке
сделаем

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

я пока что сделаю твик для всех объектов,а с тебя задачи для каждой менюшки-вдруг я не так что понял.

Добавлено через 2 минуты 24 секунды
Расшифруй, пожалуйста, флаг:
если ты первый твик не применял,то этим флагом я отделю разделительной полосой менюшки
Код:
добавление пунктов...
удаление пунктов...
от остальных пунктов в этом поле (для глаза полоса малозаметна но смотрится эстетичнее и группировка удачнее) ,разделитель в общем...

Добавлено через 4 минуты 25 секунд
моему запускаемому скрипту передавался бы полный путь к объекту, который мы тацнули мышей
а вот скрипт то готовый-
https://safezone.cc/forum/showpost.php?p=152721&postcount=11
немного изменить только его.

Добавлено через 14 минут 17 секунд
Принимай:
Код:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\MyTools]
"MUIVerb"="MyTools"
"SubCommands"="NewPunkt;DelPunkt;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="top"

[HKEY_CLASSES_ROOT\*\Shell\MyTools]
"MUIVerb"="MyTools"
"SubCommands"="NewPunkt;DelPunkt;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="top"

[HKEY_CLASSES_ROOT\Directory\shell\MyTools]
"MUIVerb"="MyTools"
"SubCommands"="NewPunkt;DelPunkt;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="top"

[HKEY_CLASSES_ROOT\Folder\shell\MyTools]
"MUIVerb"="MyTools"
"SubCommands"="NewPunkt;DelPunkt;regedit;taskmgr;devmgr"
"Icon"="imageres.dll,104"
"Position"="top"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NewPunkt]
"MUIVerb"="Добавление пунктов..."
"Icon"="Explorer.exe"
"SubCommands"="Punctor;NoPunctor"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\DelPunkt]
"MUIVerb"="Удаление пунктов..."
"Icon"="Explorer.exe"
"CommandFlags"=dword:00000040
"SubCommands"="Punctor;NoPunctor"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Punctor]
@="Добавляемый пункт"
"Icon"="Explorer.exe"

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


[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\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\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\NoPunctor]
@="Еще один пункт..."
"Icon"="Explorer.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\NoPunctor\command]
@=""

если норм -тогда можно укладывать код к каждому пункту.

Добавлено через 2 минуты 3 секунды
моему запускаемому скрипту передавался бы полный путь к объекту, который мы тацнули мышей (при выборе п. "Добавить меню...").
предлагаю два варианта:
Код:
добавить этот файл в пункт меню
выбрать программу\файл для добавления (открывается окно выбора)

Добавлено через 15 минут 10 секунд
я закомментирую
 
Последнее редактирование модератором:
если ты первый твик не применял,то этим флагом я отделю разделительной полосой менюшки
Hasta la vista, baby :) уже применил )))

я закомментирую
Та не нужно. Остальное уже понятно. Я статью читал. Просто ты на рег-файлах уже собаку съел, знал, что быстро сочинишь демку.

предлагаю два варианта:
Усложнение на потом оставим, а то я так не один проект не закончу. Но твои (и не только) новые идеи развития пригодятся.

... работаю над установщиком.
 
Последнее редактирование:
Где-то тормознул. Глаза слипаются. Глянешь? - копировал твой рег., только имена другие. Но всплывающее меню не работает.
 

Вложения

  • Install_Context_Menu.rar
    1,011 байт · Просмотры: 7
Я применяю твой reg-файл, затем свой прототип CMD.

После твоего при наведении на "MyTools" - разворачивается контекстное меню.
После моего - перестает. (Win7 x64 ru Ultimate)

Пока больше не занимался ним.
 
Dragokas, может возникать ошибка при перезаписи значений.
Сделай снимок с моим твиком и с твоим скриптом по очереди с помощью Regshot.exe,либо экспорт разделов.
Тогда можно будет точно сказать в чем проблема.
 
Да, спасибо, так и поступлю.
Помощь понадобится уже после релиза.

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

мм?
 
Чтобы дополнительно сэкономить место... Хм. Думаешь стоит?...
Если в это контекстное меню добавим много полезных функций, есть вероятность, что ним будем часто пользоваться.
Знаешь: можно вынести это в настройку при установке утиля. Вариант?
А такой трюк будет работать в XP тоже ?
 
хр сегодня постараюсь поставить,я ее реестр плохо уже помню-давно не юзал.
по поводу часто пользоваться-конечно будут,попробуй найди нормальную и удобную утиль для этого?
нету,фсякая фикня тока.
а запрос популярный)))
 
Утиль то как назвать? :) Какие говоришь, поисковые запросы популярны...?
Я обычно без названия не делаю =]]]
 
А такой трюк будет работать в XP тоже ?
В общем с ХР печально...там только если использовать специальные dll и все такое,одним реестром никак не обойтись.
Как вариант -муляж контексного меню и vbs с выбором пунктов,но кажется это сложно для реализации.
По крайней мере из того что я успел изучить в шапке с полезной литературой -грамотного решения в голову не пришло.
 
Назад
Сверху Снизу