В работе Глаголы контекстного меню по-умолчанию

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,908
Баллы
648
Можно рассказать подробнее и структурированно на эту тему? Или где почитать?
Интересно:
- как создавать глаголы для различных объектов: отдельно для расширений, файлов, папок, рабочего стола или explorer-a, всех объектов.
- распространенные флаги и опции shell

1) для расширений:
Например: exe
Сначала узнаем псевдоним:
HKCR\.exe
@=exefile

Далее ищем команду:
HKCR\exefile ->
shell\open - команда для глагола "Открыть"
shell\runas - запуск от имени администратора
shell\runasuser - запуск от имени другого пользователя

Еще есть такое:
HKCR\AllFilesystemObjects\Shell - которая действует для всех объектов файловой системы.

Еще можно как-то сделать глагол только для папок или только для файлов.
Тоже интересно.

Для рабочего стола из темы "Написание твиков" вроде все понятно:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\name]
@="Название команды"
"Icon"="путь к значку иконки"
"Position"="Расположение"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\name\command]
@="выполняемая команда"

Теперь на счет флагов и дополнительных опций:
shell ->
open\ "EditFlags" - неясно
open\command\IsolatedCommand - команда, которая выполняется при запуске "от имени администратора"
runas\ "HasLUAShield" - изображение щита рядом со строкой контекстного меню.
shell\runasuser\ "Extended" - означает, что контекстное меню будет появляться только при одновременном нажатии Shift + Right Click

Еще есть HKCR\*\shell - для всех файлов?

Еще ShellEx - имеет ли отношение к этой теме?
 

Кирилл

Команда форума
Администратор
Сообщения
13,827
Реакции
6,169
Баллы
913
Dragokas, давай как то упорядочим...

как создавать глаголы для различных объектов: отдельно для расширений, файлов, папок, рабочего стола или explorer-a, всех объектов.
Все глаголы уже аргументированы.

Согласно данным microsoft глагол есть простая текстовая строка,которую использует Shell для того,что бы определить какую операцию нужно выполнить.
Глаголы для определенного объекта определяются по схеме:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID
{CLSID}
Глагол
1
= verb1
2 = verb2
3 = ...

Например
HKEY_CLASSES_ROOT\CLSID\{18A06B6B-2F3F-4E2B-A611-52BE631B2D22}\Verb\0
@-"&Изменить0.2"

То бишь сюда прописан определенный глагол,соответствующий этому CLSID

Глагол может быть статическим и каноническим,динамическим.

Давай так,почитай сначала это:
http://msdn.microsoft.com/en-us/library/cc144175(v=vs.85).aspx

А потом снова обсудим,тогда будет конструктивнее.

Принципиальное отличие от shell (Ex) - это то что данный глагол работает только с guid и всеми его подвидами (clsid например).
Кстати на сайте майкрософт это и не описано!


Выполняет операцию на указанном файле.
http://msdn.microsoft.com/en-us/library/bb762154(v=vs.85).aspx

Кстати так как ты кодер - можешь на пальцах разложить эту тему?


open\ "EditFlags" - неясно
Файловые ассоциации: знакомимся на практике.

Еще можно как-то сделать глагол только для папок или только для файлов.
Тоже интересно.
Да,это легко сделать вписав shell (Ex) для соответствующего объекта.
Нfпример Folder (папки)
HKEY_CLASSES_ROOT\Folder\shell
Дописав туда то,что нам нужно можно работать с папками.

И так с любым объектом.

В общем сам видишь ,твой ответ не могу сформулировать в конкретный вопрос.

Давай по порядку и конкретно?
Расскажу все что знаю,ничего не скрою)
 
Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
13,827
Реакции
6,169
Баллы
913
напиши все, какие знаешь разделы реестра,
отвечающие за показ контекстного меню:
для рабочего стола,
для папки,
для файла,
для панели управления ...

Для контексного меню рабочего стола:
Код:
HKEY_CLASSES_ROOT\DesktopBackground\Shell
Для обычных файлов и скриптов
Код:
HKEY_CLASSES_ROOT\DesktopBackground\ShellEx
Для guid.

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

Для этого регистрируются дополнительные пункты в разделе:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\Shell
Или
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\ShellEx
Для guid.

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


Что бы добавить их в список,нужно прописать в определенном порядке через глагол SubCommands,в том разделе где использовался глагол MUIVerb.

Для всех объектов:
Код:
HKCR\AllFilesystemObjects\Shell
В таком варианте контексное меню доступно для всех обьектов в открытых окнах и на рабочем столе,включая папки.

Если необходимо для какого то конкретного расширения файла - работаем с progid,добавляем раздел shell и command.
В shell имя и настройки,в command код команды.


Контексное меню дисков:
Код:
HKEY_CLASSES_ROOT\Drive\shell
HKEY_CLASSES_ROOT\Drive\shellex
Код:
HKEY_CLASSES_ROOT\Directory\shell
hkey_classes_root\folder\shell

Это директории и папки.

Код:
HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Это меню значка компьютер
Про контексное меню в окне выполнить где то ты еще ссылки давал,надо поискать.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,132
Реакции
5,908
Баллы
648
О, а теперь круто было бы примерчик экспорта реестра,
демонстрирующий двойное каскадное меню.
 

Кирилл

Команда форума
Администратор
Сообщения
13,827
Реакции
6,169
Баллы
913
Dragokas,
Код:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\helpmemu]
"MUIVerb"="Шаблоны"
"SubCommands"="AddLog;prochee"
"Icon"="imageres.dll,104"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\AddLog]
"MUIVerb"="Создание логов"
"Icon"="Explorer.exe"
"SubCommands"="AddLogMbam;Autologger;Adw;AddLogUvs;AddLogRsit;glax24"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\AddLogMbam]
@="Как подготовить лог MBAM"
"Icon"="C:\\WINDOWS\\winhlp32.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\AddLogMbam\command]
@="E:\\загрузки\\Shablony\\tools\\txt-bat\\AddLogMbam.bat"
У меня все это настроено и работает на ура.

Я тебе кстати твик готовый уже давал,который уже создает все что надо.upload_2014-8-3_23-32-39.png
 
Последнее редактирование:
Сверху Снизу