C# 注册系统热键/快捷键(MainForm HotKey)
C# 注册系统热键/快捷键(MainForm HotKey)
程序说明: 创建一个MainFormHotKey的类,调用RegisterHotKeys()方法。 C# Code: using System; using System.Windows.Forms; using System.Collections; using System.Runtime.InteropServices; namespace CSFramework.Tech.HotKey { public delegate void HotkeyEventHandler(int HotKeyID); /// <summary> /// 注册热键API函数库 /// </summary> public class Hotkey : System.Windows.Forms.IMessageFilter { Hashtable keyIDs = new Hashtable(); IntPtr hWnd; public event HotkeyEventHandler OnHotkey; //键类型枚举 public enum KeyFlags { MOD_ALT = 0x1, MOD_CONTROL = 0x2, MOD_SHIFT = 0x4, MOD_WIN = 0x8 } [DllImport("user32.dll")] public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); [DllImport("user32.dll")] public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id); [DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); [DllImport("kernel32.dll")] public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); public Hotkey(IntPtr hWnd) { this.hWnd = hWnd; System.Windows.Forms.Application.AddMessageFilter(this); } public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags) { UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString()); RegisterHotKey((IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key); keyIDs.Add(hotkeyid, hotkeyid); return (int)hotkeyid; } public void UnregisterHotkeys() { System.Windows.Forms.Application.RemoveMessageFilter(this); foreach (UInt32 key in keyIDs.Values) { UnregisterHotKey(hWnd, key); GlobalDeleteAtom(key); } keyIDs.Clear(); } public bool PreFilterMessage(ref System.Windows.Forms.Message m) { if (m.Msg == 0x312) { if (OnHotkey != null) { foreach (UInt32 key in keyIDs.Values) { if ((UInt32)m.WParam == key) { OnHotkey((int)m.WParam); return true; } } } } return false; } } //注册热键基类 public class HotKeyRegisterBase { protected Hotkey _HotKey; public HotKeyRegisterBase(Form form, HotkeyEventHandler eventHandler) { _HotKey = new Hotkey(form.Handle); _HotKey.OnHotkey += new HotkeyEventHandler(eventHandler); } public virtual void RegisterHotKeys() { } public void UnregisterHotKeys() { _HotKey.UnregisterHotkeys(); } } /// <summary> /// 创建主窗体热键 /// </summary> public class MainFormHotKey : HotKeyRegisterBase { public static int _Alt_D; //delete public static int _Alt_I; //insert public static int _Alt_E; //modify public static int _Alt_N; //new public static int _Alt_S; //save public static int _Alt_X; //cancel public static int _Alt_P; //print public static int _Alt_T; //ViewContent public static int _F1; //online help public static int _F9; //Show current Stock public MainFormHotKey(Form form, HotkeyEventHandler eventHandler) : base(form, eventHandler) { } public override void RegisterHotKeys() { base.RegisterHotKeys(); _Alt_X = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.Q, Hotkey.KeyFlags.MOD_CONTROL); _Alt_D = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.D, Hotkey.KeyFlags.MOD_CONTROL); _Alt_I = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.I, Hotkey.KeyFlags.MOD_CONTROL); _Alt_E = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.E, Hotkey.KeyFlags.MOD_CONTROL); _Alt_N = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.N, Hotkey.KeyFlags.MOD_CONTROL); _Alt_S = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.S, Hotkey.KeyFlags.MOD_CONTROL); _Alt_P = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.P, Hotkey.KeyFlags.MOD_CONTROL); _Alt_T = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.T, Hotkey.KeyFlags.MOD_CONTROL); _F1 = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.F1, Hotkey.KeyFlags.MOD_CONTROL); _F9 = _HotKey.RegisterHotkey(System.Windows.Forms.Keys.F9, Hotkey.KeyFlags.MOD_CONTROL); } } }
参考文档:
Visual Studio2005,2008,2010快捷键表 C#.Net适合开发C/S结构的系统吗? C# 注册系统热键,快捷键 [原创]C#植入友商网在线服务并实现同步用户注册接口(三) C# Winform 开发框架集成快捷键功能 (Hotkey) C# Winform 软件用户授权注册系统正式发布 C/S框架网提供MES/ERP系统基于C#语言的开发平台产品 C#.NET WebApi开发框架成功案例-智运天下TMS系统APP项目截图 C# Winform 软件用户授权注册系统V2.1 测试程序(Tester.exe) 基于集团组织架构数据权限系统快速开发框架(C#.NET Winform+支持多数据库) C#源码-今客CRM客户管理系统 14.04-C#源码 C#源码-CRM客户管理系统源码-源码下载 C#源码-HF人力资源管理系统源码-源码下载 C#源码-基于C_S模式的书店销售管理系统源码-源码下载 C#源码-乐意拍进销存管理系统(修正版)源码-源码下载
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |