C#编程实现自定义热键的方法
本文实例讲述了C#编程实现自定义热键的方法。分享给大家供大家参考。具体实现方法如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Drawing.Imaging;
usingSystem.IO;
usingSystem.Runtime.InteropServices;
usingSystem.Net;
usingSystem.Drawing.Drawing2D;
namespaceApp
{
publicpartialclassForm2:Form
{
publicForm2()
{
InitializeComponent();
//程序加载加载热键
this.Load+=delegate
{
//热键一:Control+光标左箭头
CustomSystemKeyBoard.RegisterHotKey(Handle,100,8,Keys.Left);
//热键一:Control+光标右箭头
CustomSystemKeyBoard.RegisterHotKey(Handle,200,2,Keys.Right);
//热键一:Control+光标上箭头
CustomSystemKeyBoard.RegisterHotKey(Handle,300,2,Keys.Up);
//热键一:Control+光标下箭头
CustomSystemKeyBoard.RegisterHotKey(Handle,400,2,Keys.Down);
};
//在程序退出时取消热键的注册
this.FormClosing+=delegate
{
CustomSystemKeyBoard.UnregisterHotKey(Handle,100);
CustomSystemKeyBoard.UnregisterHotKey(Handle,200);
CustomSystemKeyBoard.UnregisterHotKey(Handle,300);
CustomSystemKeyBoard.UnregisterHotKey(Handle,400);
};
}
protectedoverridevoidWndProc(refMessagem)
{
//如果m.Msg的值为0x0312那么表示用户按下了热键
constintWM_HOTKEY=0x0312;
switch(m.Msg)
{
caseWM_HOTKEY:
ProcessKey(m);
break;
}
base.WndProc(refm);
}
///<summary>
///按下热键的操作
///</summary>
///<paramname="m"></param>
protectedvoidProcessKey(Messagem)
{
//IntPtr用于表示指针或句柄的平台特定类型
stringid=m.WParam.ToString();
MessageBox.Show(id);
switch(id)
{
case"100":
//
break;
case"200":
break;
case"300":
break;
case"400":
break;
}
}
}
publicclassCustomSystemKeyBoard
{
///<summary>
///声明API函数
///</summary>
///<paramname="hWnd">Handle</param>
///<paramname="id">热键id</param>
///<paramname="fsModifiers">热键类型(KeyModifiers)</param>
///<paramname="vk">键盘按键</param>
///<returns></returns>
[System.Runtime.InteropServices.DllImport("user32.dll")]
publicstaticexternboolRegisterHotKey(
IntPtrhWnd,
intid,
uintfsModifiers,
Keysvk
);
///<summary>
///声明API函数
///</summary>
///<paramname="hWnd"></param>
///<paramname="id"></param>
///<returns></returns>
[System.Runtime.InteropServices.DllImport("user32.dll")]
publicstaticexternboolUnregisterHotKey(IntPtrhWnd,intid);
///<summary>
///定义一个KeyModifiers的枚举,以便出现组合键
///</summary>
publicenumKeyModifiers
{
None=0,
Alt=1,
Control=2,
Shift=3,
Windows=8
}
}
}
希望本文所述对大家的C#程序设计有所帮助。