Visual studio 如何判断Visual Studio命令是由键盘还是菜单触发的?

Visual studio 如何判断Visual Studio命令是由键盘还是菜单触发的?,visual-studio,vsix,vsip,Visual Studio,Vsix,Vsip,是否可能知道Visual Studio命令是从键盘还是菜单触发的?我想编写一个插件,用于监视VS命令,并为从菜单中选择的任何命令建议键盘快捷键。无法从命令本身确定它是如何触发的。您也无法从CommandEvent获取此信息。这是出于设计,因为命令可以绑定到任意数量的任何类型的触发器(包括某些代码中的显式调用) 但是,您可以将自己注册为树DTE.CommandBars.Controls中所有CommandBarButton.OnClick和CommandBarComboBox.OnChange的侦

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

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

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

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