我想知道是否有一个以编程方式挂钩到visual studio编辑器中,以便我可以确定是否有人在编辑器中输入。
谢谢!
答案 0 :(得分:7)
在Visual Studio中有很多方法可以做到这一点。这里有几个不同的钩子可用。
IOleCommandTarget
:Visual Studio中的关键笔划最终将自己显示为命令并通过此链路由KeyProcessor
:对于直接的WPF键盘输入,您可以创建MEF IKeyProcessorProvider
组件并让创建的KeyProcessor
处理输入ITextBuffer::Changed
:直接监听底层缓冲区中的更改以解释输入。 每个都相当复杂,在SO问题中为它们添加完整的样本是不合理的。但只要在google中输入他们的名字就可以让你指出正确的方向。
请注意,Visual Studio中的键盘输入是一个非常复杂的过程。它必须处理Windows消息,旧式Visual Studio命令,WPF,MEF钩子,翻译加速器等等......它非常混乱,试图解决任何一个阻塞点的所有输入都充满了问题。我已经尽力在插件上记录Visual Studio键盘输入的当前状态,你可以在这里找到它
但这并不是一个完整的理解。
答案 1 :(得分:0)
绝对是。堆栈的插件做同样的事情(如ViEmu,Resharper等)。请阅读有关使用MEF扩展VS编辑器的文档。有很多它,一个简单的谷歌查询将产生大量的结果。