Ion*_*zău 17 .net c# wpf keyboard-shortcuts
我有一个简单的WPF应用程序,我需要捕获在Windows(操作系统)中按下的F1键,即使我的WPF窗口被最小化,或者它没有被激活.
检测到这个问题我有问题.我在互联网上搜索,发现很多结果,但他们没有帮助我.
为了检测应用程序内部按下的键我使用了这个简单的代码:
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)KeyPressed);
private void KeyPressed(object sender, KeyEventArgs e)
{
if (e.Key == Key.F1)
{
//my code went here
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我的窗口未激活时,这不起作用.
所以,我的问题是:如何检测全球按键?
我再说一遍:这是一个WPF应用程序.
Ria*_*Ria 23
没必要Keyboard Hooking.只需使用RegisterHotKey(定义系统范围的热键)和UnregisterHotKeyWindows API.尝试在pinvoke.net或这些教程的C#中使用它们:
Microsoft论坛中有一个示例.
您可以使用这些修饰符和虚拟键代码:
MOD_ALT (0x0001) MOD_CONTROL (0x0002) MOD_NOREPEAT (0x4000) MOD_SHIFT (0x0004) MOD_WIN (0x0008)
例如F1键是VK_F1 (0x70).