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

Тема в разделе "Реестр Microsoft Windows", создана пользователем Dragokas, 17 апр 2014.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    Можно рассказать подробнее и структурированно на эту тему? Или где почитать?
    Интересно:
    - как создавать глаголы для различных объектов: отдельно для расширений, файлов, папок, рабочего стола или 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 - имеет ли отношение к этой теме?
     
    Drongo нравится это.
  2. Kиpилл
    Онлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.216
    Симпатии:
    4.978
    Dragokas, давай как то упорядочим...

    Все глаголы уже аргументированы.

    Согласно данным 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

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


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

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

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

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

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

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.216
    Симпатии:
    4.978

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

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

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

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


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

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

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


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

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

    Код (Microsoft Registry):
    HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    Это меню значка компьютер
    Про контексное меню в окне выполнить где то ты еще ссылки давал,надо поискать.
     
    Dragokas нравится это.
  4. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    О, а теперь круто было бы примерчик экспорта реестра,
    демонстрирующий двойное каскадное меню.
     
  5. Kиpилл
    Онлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.216
    Симпатии:
    4.978
    Dragokas,
    Код (Microsoft Registry):
    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"


     
    У меня все это настроено и работает на ура.

    Я тебе кстати твик готовый уже давал,который уже создает все что надо.
    --- Объединённое сообщение, 3 авг 2014, Дата первоначального сообщения: 3 авг 2014 ---
    upload_2014-8-3_23-32-39.png
     
    Последнее редактирование: 3 авг 2014
    Dragokas нравится это.

Поделиться этой страницей