本文实例讲述了C#全局热键设置与窗体热键设置,分享给大家供大家参考。具体实现方法如下:
1、窗体热键
首先要设置主窗体KeyPreview为true,可直接在属性中进行设置,
或者在窗体加载中设置: this.KeyPreview = true;
然后添加窗体KeyDown事件,如下:
2、全局热键设置
定义API函数 》 注册热键 》 卸载热键
我这里定义了AppHotKey类,全部代码如下:
[DllImport(\"user32.dll\", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, //要取消热键的窗口的句柄
int id //要取消热键的ID
);
//定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
/// <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)
{
try
{
if (!RegisterHotKey(hwnd, hotKey_id, keyModifiers, key))
{
if (Marshal.GetLastWin32Error() == 1409) { MessageBox.Show(\"热键被占用 !\"); }
else
{
MessageBox.Show(\"注册热键失败!\");
}
}
}
catch (Exception) { }
}
/// <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);
}
}
本文地址:https://www.stayed.cn/item/4815
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我