在Visual Studio编辑器中检测活动

4

我想知道是否有一种编程方式可以钩入Visual Studio编辑器,以便我可以确定某人是否在编辑器中输入。

谢谢!

2个回答

7
在Visual Studio中,有许多方法可以实现这一点。以下是几种可用的不同钩子。
- `IOleCommandTarget`:Visual Studio中的按键最终会呈现为命令,并通过此链路路由。 - `KeyProcessor`:对于直接的WPF键盘输入,您可以创建一个MEF `IKeyProcessorProvider`组件,并让创建的`KeyProcessor`处理输入。 - `ITextBuffer :: Changed`:直接侦听底层缓冲区中的更改以解释输入。
每个都相当复杂,在SO问题中添加完整示例是不合理的。但只需将它们的名称输入Google,即可指向正确的方向。
请注意,Visual Studio中的键盘输入是一个非常复杂的过程。它必须处理Windows消息、旧版Visual Studio命令、WPF、MEF钩子、翻译加速器等等... 它非常混乱,试图在任何一个阻塞点上处理所有输入都充满了问题。我在开发插件时尽力记录了Visual Studio键盘输入的当前状态,您可以在此处找到它。

然而这还远远不是一个完整的理解。


0

当然有了。很多插件都可以做同样的事情(例如ViEmu、Resharper等)。去阅读使用MEF扩展VS编辑器的文档吧。有很多相关内容,简单的谷歌搜索就能给你带来丰富的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接