如何判断键盘或菜单是否触发了Visual Studio命令?

时间:2013-05-13 16:21:47

标签: visual-studio vsix vsip

是否可以知道是否从键盘或菜单触发了Visual Studio命令?我想编写一个监视VS命令的插件,并为从菜单中选择的任何命令建议键盘快捷键。

1 个答案:

答案 0 :(得分:2)

无法从Command本身确定它是如何触发的。您也无法从CommandEvent获取此信息。这是设计使然,因为命令可以绑定到任意类型的任意数量的触发器(包括某些代码中的显式调用)。

但是,您可以将自己注册为树DTE.CommandBars.Controls中所有CommandBarButton.OnClick和CommandBarComboBox.OnChange的侦听器。每当发生上述事件之一时,捕获下一个CommandEvent。这是由相应的CommandBarControl立即触发的命令。

我想这对你描述的场景已经足够了。但请注意,您无法从中得出结论,所有其他命令都是由某些快捷方式触发的,因为命令可以隐式触发(通过其他命令)。您可以通过检查按键是否被按下来进行近似,这是一个相当脆弱的方法......如果有人知道更好的方法,欢迎添加!