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#程序设计有所帮助。