1

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

4

1 回答 1

2

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

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

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

于 2013-09-26T11:44:13.247 回答