我想知道Visual Studio编辑器中是否有程序挂钩,以便我可以确定是否有人在编辑器中键入内容。
谢谢!
最佳答案
在Visual Studio中,有很多方法可以做到这一点。这里有一些可用的钩子。IOleCommandTarget
:Visual Studio中的按键最终将以命令的形式出现并通过此链进行路由KeyProcessor
:对于直接WPF键盘输入,您可以创建MEF IKeyProcessorProvider
组件,并让创建的KeyProcessor
处理输入ITextBuffer::Changed
:直接侦听基础缓冲区中的更改以解释输入。
这些中的每一个都相当复杂,因此在SO问题中为它们添加完整的样本只是不合理的。但只要在Google中输入他们的名字,就可以使您指向正确的方向。
请注意,尽管Visual Studio中的键盘输入是一个非常复杂的过程。它必须处理Windows消息,旧式的Visual Studio命令,WPF,MEF挂钩,翻译加速器等。它非常混乱,试图在任何一个阻塞点处理所有输入都充满了问题。我已尽力记录下使用插件时Visual Studio键盘输入的当前状态,您可以在此处找到它
https://github.com/jaredpar/VsVim/blob/master/Src/VsVim/KeyboardInputRouting.txt
但是,这并不是一个完整的理解。
关于.net - 在Visual Studio编辑器中检测事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3958354/