2

有什么方法可以从 Visual Studio 扩展/包中动态添加全局热键?

在我的包的 *.vsct 文件中声明热键不是选项,因为我不知道哪些热键在运行时应该可用 - 我的扩展中有一种插件系统可以动态添加/删除热键。

仅当 .NET 运行消息循环时,添加消息过滤器才有效——这在 VS 中并非如此。

谢谢你的支持!

4

1 回答 1

4

添加热键的最佳方法是在没有任何键绑定的情况下继续定义您的命令。基本上确保该命令MyExtension.MyOperation可用但未绑定任何键。

在运行时,您可以获取DTE.Command扩展命令的对象。它可以通过对象Commands上的属性获得DTEBinding从那里您可以通过设置属性 来更改特定命令绑定到的键。

例如,如果您想将绑定更改为CTRL+o我会执行以下操作

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

键绑定的语法实际上在 MSDN 上有很好的记录。

于 2012-02-01T15:28:16.973 回答