Порядок в контекстном меню Windows Explorer - PullRequest
6 голосов
/ 10 августа 2011

Как я могу изменить порядок записей в контекстном меню? Например, я хочу поместить свое пользовательское действие в конец списка контекстного меню

Спасибо заранее!

Ответы [ 4 ]

8 голосов
/ 10 августа 2011

Мой Google-фу привел меня к this :

Таким образом, сортировка основана на следующих элементах в порядке принятия решений:

  1. Ключpriority (например, txtfile, *, AFSO)
  2. Порядок перечисления реестра для shellex \ contextmenuhandlers со специальным регистром для статических глаголов, всегда первый
  3. IContextMenu Порядок реализации

Таким образом, если есть какое-либо противоречие за позицию, для последовательного расширения нет последовательного способа гарантировать его относительное положение в меню.

Очевидно, что вы ничего не можете сделать с фазой 1. Только фаза 3применяется к глаголам, реализованным в вашем обработчике.Это оставляет фазу 2. Единственное, что вы можете сделать, это назвать вашу запись в ContextMenuHandlers так, чтобы она сначала была перечислена, но ничто не мешает кому-то сделать то же самое.

3 голосов
/ 26 марта 2017

Это для Windows 7, возможно, то же самое для более новых версий.Он был вдохновлен другими ответами, все влияет на порядок.

Я объясняю записи для "*" (все файлы), но то же самое касается специальных расширений.

Я не несу ответственности за любые изменения, внесенные в реестр!

В контекстном меню есть три раздела, как сказано в Как изменить порядок параметровв контекстном меню (из ответ от @ Anonymouse )

Они называют их:

2 - Default menu position (at the top).
1 - Send to, copy to folder and move to folder menu part (in the middle).
0 - Rename menu part (at the bottom).

В этих разделах положение определяется правилами в ответ от @ Luke
Самый простой способ изменить порядок в «разделе» - это изменить имя раздела реестра в HKCR-*-shell или HKCR-*-shellex.Все под подразделом shell будут перед ними под shellex.Ключи с CLSID в качестве имени ключа будут последней записью, поскольку они являются последними в используемом порядке.

В качестве примера я следовал примеру из MSDN для создания контекстного меню.Обработчик .Это означает использование CLSID в качестве имени для ключа в shellex и «понятное имя» в качестве значения по умолчанию.Он был размещен внизу «секции» 2 (верхняя секция).Я изменил имя ключа на что-то вроде Asample и заменил значение по умолчанию на CLSID.Теперь это было непосредственно после записей в shell.

. Есть еще несколько способов изменить порядок.

Для ключей в shell вы можете добавить значение Position со строковыми данными.Top или Bottom.Невозможно решить, в каком «разделе».

Для ключей с shellex значение Position не имеет никакого эффекта.Вместо этого можно решить, в каком «разделе» будет использоваться запись flags, , описанная в ссылке выше.

  1. Используйте CLSID дляшеллекст, который вы хотите переместить.Это как
    {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}.Получите его либо из имени ключа, либо по умолчанию, это зависит от того, как выполняется запись.
  2. Найдите запись в разделе HKCR-CLSID, ключ имеет имя CLSID.
2 голосов
/ 22 июня 2016

Это сделало это для меня ... Шаги с 4 по 7 - установка "флагов" http://techoqueries.blogspot.de/2012/08/how-to-change-order-of-options-in.html

1 голос
/ 03 июля 2015

В этом разделе вопросов и ответов показан простой способ СОЗДАТЬ (не перемещать) элемент в контекстном меню.Мне удалось скопировать существующий элемент.Затем я переместил свой элемент на более высокую и более доступную позицию в контекстном меню, переименовав клавишу, чтобы начать с чего-то «aMyItem» или «0MyItem».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...