如何从.NET 2.0程序集中挂钩winforms或WPF中的热键?

时间:2009-12-05 14:10:21

标签: wpf windows winforms hotkeys winforms-interop

我的程序集以.NET 2.0为目标,可与各种应用程序兼容。当与桌面应用程序(winforms或WPF)一起使用时,我想挂钩某些热键和弹出无模式对话框窗口。棘手的一点是找到一个可以在与WPF兼容的.NET 2.0下实现的解决方案。

对于winforms,我可以使用RegisterHotKey或在WM_KEYDOWN方法中实现IMessageFilter并挂钩PreFilterMessage,但它们与WPF不兼容。

对于WPF,InputBinding类非常好,但在.NET 2.0中不可用。

理想的解决方案是:

  • 构建面向.NET的程序集

  • 为WPF或Winforms

  • 挂钩击键
  • 提供应用程序范围,而非系统范围

1 个答案:

答案 0 :(得分:0)

您可以构建基于Windows API(系统范围的挂钩)的通用解决方案。 Don Esposito写了一篇很棒的文章。这是一个链接

http://msdn.microsoft.com/en-us/magazine/cc188966.aspx

如果您不想要系统范围的挂钩,也可以编写应用程序挂钩。这实际上更容易实现。我也认为唐也是这样。