在visual studio编辑器中检测活动

dan*_*ich 4 .net editor visual-studio-2010 visual-studio vsix

我想知道是否有一个以编程方式挂钩到visual studio编辑器,以便我可以确定是否有人在编辑器中输入.

谢谢!

Jar*_*Par 7

在Visual Studio中有很多方法可以做到这一点.这里有几个不同的钩子可用.

  • IOleCommandTarget:Visual Studio中的关键笔划最终将自身显示为命令并通过此链路由
  • KeyProcessor:对于直接WPF键盘输入,您可以创建MEF IKeyProcessorProvider组件并让创建的KeyProcessor句柄输入
  • ITextBuffer::Changed:直接监听底层缓冲区中的更改以解释输入.

这些中的每一个都相当复杂,在SO问题中为它们添加完整的样本是不合理的.但只需在谷歌中输入他们的名字就可以让你指出正确的方向.

请注意,Visual Studio中的键盘输入是一个非常复杂的过程.它必须处理Windows消息,旧式Visual Studio命令,WPF,MEF钩子,翻译加速器等等......它非常混乱,试图解决任何一个阻塞点的所有输入都充满了问题.在插件上工作时,我已尽力记录Visual Studio键盘输入的当前状态,您可以在此处找到它

但这并不是一个完整的理解.