.net - 在Visual Studio编辑器中检测事件

标签 .net visual-studio visual-studio-2010 editor vsix

我想知道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/

相关文章:

visual-studio-2010 - 使 Visual Studio 2010 在代码编辑器中显示更多行

c# - 如何判断一个方法是直接还是间接调用了一个属性?

.net - Windows Phone 8 应用程序生命周期事件和异步/等待

c# - 如何将 A<T> 类型的泛型对象转换为 A<T'>?

c - 浮点常量比较 - (0.0 ? 1 : 0)

visual-studio-2010 - 续订 ClickOnce 证书失败,即使它针对 .NET 4.0 Framework

.net - WPF 数据绑定(bind) - 将所有具有验证规则的绑定(bind)的 NotifyOnValidationError 设置为 true

c# - ListView 子项字体不起作用

git - Visual Studio 2017 本地 Git Repo 路径不正确

c# - 如何将 C# 8 与 Visual Studio 2017 一起使用?