2

Итак, я только что создал файл на своем рабочем столе с новым расширением, и вот как выглядит его контекстное меню:

Я могу вызвать контекстное меню с помощью клавиши меню на моей клавиатуре, и я могу фактически выбрать некоторые элементы в контекстном меню, нажимая после этого клавиши. Естественно, это дает мне возможность создавать сочетания клавиш. Однако я не совсем понимаю, как они работают. Возьмите следующий пример.

Если я создаю файл с именем "item.newextension", а затем импортирую следующий файл реестра:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Edit\command]
@="notepad.exe \"%1\""

[HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.newextension\shell\Contemplate\command]
@="mspaint.exe \"%1\""

Я получаю противоречивые и интересные результаты. Чтобы быть на той же странице, теперь мое контекстное меню выглядит так:

Если я открою контекстное меню и нажму клавишу "е", блокнот откроется сразу. Кроме того, если я открою контекстное меню и нажму клавишу "c", контекстное меню переключается между "созерцать" и "копировать", но не выбирает ни того, пока я не нажму клавишу ввода.

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

  1. Когда я создаю свои собственные записи контекстного меню, как я это делал в файле .reg, как мне выбрать, какой ключ отвечает за выбор этой записи?
  2. Могу ли я изменить существующие сочетания клавиш для таких вещей, как "Создать ярлык" и "Копировать", или они всегда должны быть "s" и "c" соответственно?

Я на Windows 10 1803 Build 17134 для справки.

1 ответ1

2

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

Очевидно, что Windows использует первую букву текста элемента в качестве горячей клавиши. Вы можете переопределить это, поместив амперсанд (&) перед буквой, которую вы хотите использовать как горячую клавишу. Однако это должно быть сделано в значении по умолчанию ключа реестра команды, а не имени ключа. На этом изображении я попытался изменить горячую клавишу для «Созерцать» на O, а горячую клавишу для «Изменить на :

использование амперсанда в имени ключа или значение по умолчанию, кажется, работает

Оба, кажется, работают в том, что вышеупомянутая конфигурация производит это контекстное меню:

изменения вступают в силу визуально

Нажатие O немедленно запускает Созерцание, но нажатие I ничего не делает, хотя ни один другой элемент в моем меню не использует I. Изменение Edit, чтобы иметь имя ключа без амперсанд, но значение по умолчанию Ed&it заставляет его работать как ожидалось.

Не существует простого способа изменить элементы встроенного контекстного меню, такие как Копировать; они не находятся в реестре и вместо этого создаются Explorer. Возможно, вы сможете написать расширение оболочки, которое использует SetMenuItemInfo с соответствующими структурами информации меню, чтобы изменить его во время выполнения. Для более старого ответа я написал расширение оболочки для изменения значков встроенных элементов, которые могут быть хорошей отправной точкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .