在visual studio编辑器中检测活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在visual studio编辑器中检测活动相关的知识,希望对你有一定的参考价值。

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

谢谢!

答案

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

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

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

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

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

另一答案

绝对是。堆栈的插件做同样的事情(如ViEmu,Resharper等)。请阅读有关使用MEF扩展VS编辑器的文档。有很多它,一个简单的谷歌查询将产生大量的结果。

以上是关于在visual studio编辑器中检测活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在Visual Studio代码中检测文档中语言的变化?

有没有办法在 Visual Studio 2010 中突出显示当前活动的代码块?

如何检测 C# Windows Forms 代码在 Visual Studio 中执行?

Visual Studio代码中的活动栏宽度

visual studio把右边的解决方案关闭了,怎么搞出来

Visual Studio vc++的静态代码内存泄漏检测