写在前面:软件创意是模仿,部分代码参考了网上的内容。
【感谢】https://blog.csdn.net/cuoban/article/details/50750609
【感谢】Setuna
注册全局快捷键
/// <summary>
/// 自定义热键
/// </summary>
public class AppHotKey
{
[DllImport("kernel32.Dll")]
public static extern uint GetLastError();
//如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError
[DllImport("User32.Dll", SetLastError = true)]
public static extern bool RegisterHotKey (
IntPtr hWnd, //窗口句柄
int id, //热键id
KeyModifiers keyModifiers, //定义是否使用Alt/Ctrl/Shift/WindowsKey
Keys key //热键内容
);
[DllImport("User32.Dll",SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, //窗口句柄
int id //热键id
);
public static void RegKey(IntPtr hWnd, int id, KeyModifiers keyModifiers, Keys key)
{
try
{
if (!RegisterHotKey(hWnd, id, keyModifiers, key))
{
MessageBox.Show(string.Format("热键 {0}+{1} {2}!", keyModifiers, key,
Marshal.GetLastWin32Error() == 1409 ? "被占用" : "注册失败"));
}
}
catch{ }
}
public static void UnRegKey(IntPtr hWnd,int id)
{
UnregisterHotKey(hWnd, id);
}
}
[Flags]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}