csharp WPF注册系统热键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp WPF注册系统热键相关的知识,希望对你有一定的参考价值。
internal static class HotKeyManager { private static IntPtr hwnd = IntPtr.Zero; private static Dictionary<int, Action> hotkeyAction = new Dictionary<int, Action>(); public static void Init() { var source = HwndSource.FromHwnd(new WindowInteropHelper(App.Current.MainWindow).Handle); source.AddHook(WndProc); hwnd = source.Handle; } public static void UnInit() { var keys = hotkeyAction.Keys.ToList(); foreach (var id in keys) { UnRegister(id); } } public static bool Register(int id, KeyModifiers control, Keys vk, Action action) { if (hwnd == IntPtr.Zero) { throw new Exception("No Init"); } var isOk = Win32.RegisterHotKey(hwnd, id, (uint)control, vk); if (isOk) { hotkeyAction.Add(id, action); return true; } else { return false; } } public static void UnRegister(int id) { if (hwnd != IntPtr.Zero) { if (hotkeyAction.ContainsKey(id)) { Win32.UnregisterHotKey(hwnd, id); hotkeyAction.Remove(id); } } } private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == 0x0312) { if (hotkeyAction.ContainsKey(wParam.ToInt32())) { hotkeyAction[wParam.ToInt32()](); } } return IntPtr.Zero; } }
以上是关于csharp WPF注册系统热键的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 WPF 和 .NET 3.5 注册全局热键以说出 CTRL+SHIFT+(LETTER)?
注册系统热键
WPF 窗体快捷键(热键)
WPF 窗体快捷键(热键)
C# winform 程序在后台运行 点击快捷键使程序做出相应反应。
WPF中的自定义热键