即使最小化,C#WPF也会捕获keydown

时间:2015-02-28 18:39:19

标签: c# wpf

我想知道当应用程序表单最小化时,如何让我的应用程序捕获任何keydown / keyup。比如,程序被最小化,然后用户按“A”,将出现一个弹出控件。请注意,我的程序可以工作,但最小化时不能感谢。

1 个答案:

答案 0 :(得分:5)

您需要的是 HotKeys 。没有内置的.NET功能允许这样做,但它内置于Win32 API中。

所以你需要两个方法RegisterHotKeyUnregisterHotKey,它位于user32.dllSystem.Runtime.InteropServices命名空间中,其中包含我们需要调用的重要DllImportAttribute上面两个Win32 API函数注册了Hotkey。

这里有两个链接,其中包含一个使用热键的好演示。

1)Global Hotkeys: Register a hotkey that is triggered even when form isn't focused

2)Simple steps to enable Hotkey and ShortcutInput user control

您必须使用这些修饰符和Virtual-Key Codes(符号常量名称,十六进制值以及系统使用的虚拟键代码的鼠标或键盘等效项。):

MOD_ALT      (0x0001)
MOD_CONTROL  (0x0002)
MOD_NOREPEAT (0x4000)
MOD_SHIFT    (0x0004)
MOD_WIN      (0x0008)

例如A是0x41。