我有一些用 WPF 编写的 VS2010 插件。我的 WPF 应用程序处理一些基本的快捷方式。以前,我的 WPF 是独立的应用程序,我使用快捷键(Ctr+c、Ctrl、v)处理了一些基本命令(复制、粘贴等)。
现在我的应用程序内置在 VS 中,我无法获取这些密钥,因为 VS 处理它们并阻止它们。我试图挂钩到键盘事件,但我看到了很多,这是一种肮脏的方式。
VS 有什么方法想要处理快捷方式,或者至少我的应用程序将有机会首先处理事件?
这样做的正确方法是什么?
谢谢,莱昂
我有一些用 WPF 编写的 VS2010 插件。我的 WPF 应用程序处理一些基本的快捷方式。以前,我的 WPF 是独立的应用程序,我使用快捷键(Ctr+c、Ctrl、v)处理了一些基本命令(复制、粘贴等)。
现在我的应用程序内置在 VS 中,我无法获取这些密钥,因为 VS 处理它们并阻止它们。我试图挂钩到键盘事件,但我看到了很多,这是一种肮脏的方式。
VS 有什么方法想要处理快捷方式,或者至少我的应用程序将有机会首先处理事件?
这样做的正确方法是什么?
谢谢,莱昂
您应该使用 Visual Studio 命令。Visual Studio 有自己的键绑定,因此 Copy 可能不会映射到 Ctrl-C,具体取决于用户的设置。
看一下IOleCommandTarget
andVsStd2k
命令集。根据您添加外接程序的方式,在某些时候,您将收到对IOleCommandTarget
包中实现的调用。为了接收对您的Execute
方法的调用,您首先需要告诉 IDE 您确实处理了该命令(为此,您需要实现QueryStatus
并通知 VS 该命令有效以进行处理)。复制命令在GUID_VSStandardCommandSet97
命令组中。