【问题标题】:Define application-wide hot key in mixed wpf/win32 app在混合 wpf/win32 应用程序中定义应用程序范围的热键
【发布时间】:2011-05-18 10:43:30
【问题描述】:

我有一个 WPF(prism)应用程序,它使用大量其他 WPF 程序集,甚至包含其他窗口(wpf 和 win32)的 win32 dll。

当用户按下功能键(F2-F12)时,我想打开特定的程序功能。

类似这样的:

RoutedCommand commandF4 = new RoutedCommand();
commandF4.InputGestures.Add(new KeyGesture(Key.F4));
Application.Current.MainWindow.CommandBindings.Add(new CommandBinding(commandF4, CallCommandF4));

问题是:这仅在 MainWindow 具有焦点时才有效。如果我打开辅助 WPF 窗口(或 win32 窗口),则键绑定不再适用。

有没有办法为 F4(或其他键)添加应用程序范围的全局热键?
或者至少是 WPF 范围内的热键?

【问题讨论】:

标签: wpf hotkeys winapi


【解决方案1】:

您可以尝试我认为编写一个键盘挂钩并附加此挂钩以侦听来自应用程序线程的键盘消息。

这是一个很好的灵感例子:http://www.codeproject.com/KB/cs/globalhook.aspx

请注意,如果您使用 .Net 4.0,那么您何时将使用 SetWindowsHookEx 而不是使用

Assembly.GetExecutingAssembly().GetModules()[0]

作为 hMod 参数,使用:

Process.GetCurrentProcess().MainModule.BaseAddress

【讨论】:

  • 啊,刚刚注意到一个问题已经一年了:)
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2023-03-25
  • 2021-10-24
  • 1970-01-01
  • 2011-08-17
相关资源
最近更新 更多