我想知道是否有一个编程性的挂钩在Visual Studio编辑器中,以便我可以确定某人是否在编辑器中键入。

谢谢!

有帮助吗?

解决方案

在Visual Studio中有多种方法可以做到这一点。这里有一些不同的钩子。

  • IOleCommandTarget: :Visual Studio中的关键笔触最终将以命令表示自己,并通过此链条路由
  • KeyProcessor: :对于直wpf键盘输入,您可以创建MEF IKeyProcessorProvider 组件,让创建 KeyProcessor 处理输入
  • ITextBuffer::Changed: :直接聆听基础缓冲区的更改以解释输入。

这些中的每一个都相当复杂,在SO问题中为他们添加完整的样本是不合理的。但是,仅将他们的名字键入Google就应该使您指向正确的方向。

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

不过,这几乎不是一个完全的理解。

其他提示

绝对是。插件的插件执行相同的操作(例如Viemu,Resharper等)。去阅读有关使用MEF扩展VS编辑器的文档。那里有很多,一个简单的Google查询将为您带来很多结果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top