using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace RichCreator.Utility.Utilitys { public class SystemHotKey { /// /// 如果函数执行成功,返回值不为0。 /// 如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 /// /// 要定义热键的窗口的句柄 /// 定义热键ID(不能与其它ID重复) /// 标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 /// 定义热键的内容 /// [DllImport("user32.dll", SetLastError = true)] public static extern bool RegisterHotKey(IntPtr hWnd, int id, KeyModifiers fsModifiers, Keys vk); /// /// 注销热键 /// /// 要取消热键的窗口的句柄 /// 要取消热键的ID /// [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey(IntPtr hWnd, int id); /// /// 辅助键名称。 /// Alt, Ctrl, Shift, WindowsKey /// [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 } /// /// 注册热键 /// /// 窗口句柄 /// 热键ID /// 组合键 /// 热键 public static bool RegHotKey(IntPtr hwnd, int hotKeyId, KeyModifiers keyModifiers, Keys key) { if (!RegisterHotKey(hwnd, hotKeyId, keyModifiers, key)) { int errorCode = Marshal.GetLastWin32Error(); //if (errorCode == 1409) //{ // MessageBox.Show("热键被占用 !"); //} //else //{ // MessageBox.Show("注册热键失败!错误代码:" + errorCode); //} return false; } return true; } /// /// 注销热键 /// /// 窗口句柄 /// 热键ID public static void UnRegHotKey(IntPtr hwnd, int hotKeyId) { //注销指定的热键 UnregisterHotKey(hwnd, hotKeyId); } } }