2012-02-01 57 views
1

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

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

添加一个消息过滤器只在.NET运行消息循环时才起作用 - 这不是VS中的情况。

感谢您的支持!

回答

4

添加热键的最佳方式是继续并定义您的命令,而不使用任何键绑定。基本上确保命令MyExtension.MyOperation可用,但绑定到没有键。

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

例如,如果你想改变结合CTRL + O我会做以下

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

的语法键绑定实际上是在MSDN上相当有据可查。

+0

由于贾里德,问题是,我甚至不知道哪个命令将可用,因为插件会向他们提供。我最后的手段是定义一个固定数量的虚拟命令,插件可以自己注册。但是,这似乎对我完全是疯了。 – 2012-02-01 15:31:40