如何通过ENVDTE捕获VS2008中的鼠标点击事件?
我正在为 Visual Studio 编写一个附加组件(采用 VSPackage 的格式)。设计的功能之一是:当用户在文本编辑器区域左键单击或按向上或向下键移动到新行时,该附加组件可以捕获此事件,然后执行某些操作(类似于“VA”) Visual Assist 中的“轮廓”功能,当您单击新行时,相应的元素将在 VA 轮廓工具窗口中突出显示)。
我遇到的问题是:我在 Visual Studio Shell 或其他 SDK 中找不到任何支持鼠标级事件的 API(Envdte80 命名空间提供了一个名为“TextDocumentKeyPressEvents”的事件,可用于键盘级事件)。有人能解决这个问题吗?提前非常感谢:-)
I'm writing an add-on (by the format of VSPackage) for Visual Studio. One of the designed feature is: when user left-clicks in the area of text editor or presses up or down key to move to a new line, the add-on can capture this event and then do something (It's similar as the "VA Outline" feature in Visual Assist, when you clicks to a new line, the corresponding element will be highlighted in VA Outline tool window).
The problem I meet is: I can't find any API in Visual Studio Shell or other SDK that supports the Mouse-level event (The Envdte80 namespace supplies an event named "TextDocumentKeyPressEvents" which can be used for keyboard-level event). Does somebody get a solution to this? Many thanks in advance:-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Visual Studio 扩展性中没有直接的方法可以做到这一点。
但是您可以使用本机 WinAPI(来自 C++ 或 C# 扩展包)来设置全局鼠标挂钩 - 这将使您能够拦截鼠标单击。您可以从扩展包中过滤单击、在文本编辑器中获取插入符位置等。
There is no direct way to do so in Visual Studio extensibility.
But you can use native WinAPI (from C++ or C# extensibility package) to set a global mouse hook - this will give you ability to intercept mouse clicks. You can than filter click, get caret position in text editor etc from within your extensibility package.