我需要能够为 WPF 应用程序设置后台热键事件。(通过背景我的意思是有问题的应用程序可能没有必要成为焦点)。
我知道使用 WinForms 的正确方法是导入 user32.dll,并使用 RegisterHotKey,然后捕获适当的 WM_POST 消息。我确信必须有一个更好的 WPF 解决方案,然后使用 user32.dll,但我一直找不到任何东西。有什么建议么?谢谢
我认为 WPF 没有任何内置的热键支持,至少我找不到任何热键,我直接使用了 RegisterHotKey。
这有一个很好的例子(参见 5.2 “注册系统热键”):
http://blog.280z28.org/archives/2007/03/15/
它使用Managed Windows API,这是对许多遗留 api 调用的一个很好的包装器。
为什么不使用 WPF 提供的 Commanding 基础架构?您可以尝试为您的主窗口分配一些命令绑定并为其提供一些按键手势...
您要么必须像您说的那样使用 WinForm,要么使用 Win32。
我在一个类 (Win32) 中制作了一个解决方案,您可以直接在 wpf 解决方案中使用它。只需将该类放在一个单独的 DLL 中,对 win32 的任何调用对您都是透明的(并让您继续使用编辑并正常继续)。希望能帮助到你。