Динамические горячие клавиши для расширения Visual Studio - PullRequest
1 голос
/ 01 февраля 2012

Можно ли каким-либо образом динамически добавлять глобальные горячие клавиши из расширения / пакета Visual Studio?

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

Добавление фильтра сообщений работает только тогда, когда .NET запускает цикл сообщений - что не являетсядело в VS.

Спасибо за вашу поддержку!

1 Ответ

4 голосов
/ 01 февраля 2012

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

Во время выполнения вы можете получить объект DTE.Command для вашей команды расширения.Он доступен через свойство Commands объекта DTE.Оттуда вы можете изменить ключ, к которому привязана конкретная команда, установив свойство Binding.

Например, если вы хотите изменить привязку на CTRL + o , я бы сделал следующее

command.Binding = "Global::ctrl+o";

Синтаксис для привязки ключа на самом деле довольно хорошо задокументированна MSDN.

...