mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-06-08 23:19:14 +08:00
61 lines
2.2 KiB
C#
61 lines
2.2 KiB
C#
using System;
|
||
using System.ComponentModel;
|
||
using System.Runtime.InteropServices;
|
||
using System.Windows.Forms;
|
||
|
||
namespace GrasscutterTools.Utils
|
||
{
|
||
public static class AppHotKey
|
||
{
|
||
/// <summary>
|
||
/// 注册热键
|
||
/// </summary>
|
||
/// <param name="hwnd">窗口句柄</param>
|
||
/// <param name="hotKey_id">热键ID</param>
|
||
/// <param name="keyModifiers">组合键</param>
|
||
/// <param name="key">热键</param>
|
||
public static void RegKey(IntPtr hwnd, int hotKey_id, KeyModifiers keyModifiers, Keys key)
|
||
{
|
||
if (!RegisterHotKey(hwnd, hotKey_id, keyModifiers, key))
|
||
throw new Win32Exception();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 注销热键
|
||
/// </summary>
|
||
/// <param name="hwnd">窗口句柄</param>
|
||
/// <param name="hotKey_id">热键ID</param>
|
||
public static void UnRegKey(IntPtr hwnd, int hotKey_id)
|
||
{
|
||
//注销Id号为hotKey_id的热键设定
|
||
UnregisterHotKey(hwnd, hotKey_id);
|
||
}
|
||
|
||
//如果函数执行成功,返回值不为0。
|
||
//如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
|
||
[DllImport("user32.dll", SetLastError = true)]
|
||
private static extern bool RegisterHotKey(
|
||
IntPtr hWnd, //要定义热键的窗口的句柄
|
||
int id, //定义热键ID(不能与其它ID重复)
|
||
KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
|
||
Keys vk //定义热键的内容
|
||
);
|
||
|
||
[DllImport("user32.dll", SetLastError = true)]
|
||
private static extern bool UnregisterHotKey(
|
||
IntPtr hWnd, //要取消热键的窗口的句柄
|
||
int id //要取消热键的ID
|
||
);
|
||
|
||
//定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
|
||
[Flags]
|
||
public enum KeyModifiers
|
||
{
|
||
None = 0,
|
||
Alt = 1,
|
||
Ctrl = 2,
|
||
Shift = 4,
|
||
WindowsKey = 8
|
||
}
|
||
}
|
||
} |