Динамические горячие клавиши для расширения Visual Studio
Есть ли способ, которым я могу динамически добавлять глобальные горячие клавиши из расширения / пакета Visual Studio?
Объявление горячих клавиш в файле *.vsct моего пакета не вариант, потому что я не знаю, какие горячие клавиши должны быть доступны во время выполнения - внутри моего расширения есть своего рода плагин-система, которая может динамически добавлять / удалять горячие клавиши.
Добавление фильтра сообщений работает только тогда, когда.NET запускает цикл сообщений, что не относится к VS.
Спасибо за вашу поддержку!
1 ответ
Лучший способ добавить горячие клавиши - это определить свои команды без каких-либо привязок клавиш. По сути убедитесь, что команда MyExtension.MyOperation
доступен, но не привязан ни к одному ключу.
Во время выполнения вы можете взять DTE.Command
объект для вашей команды расширения. Это доступно через Commands
собственность на DTE
объект. Оттуда вы можете изменить ключ, к которому привязана конкретная команда, установив Binding
имущество.
Например, если вы хотите изменить привязку к CTRL+o, я бы сделал следующее
command.Binding = "Global::ctrl+o";
Синтаксис для связывания ключей на самом деле довольно хорошо документирован на MSDN.