C#編程實現(xiàn)自定義熱鍵的方法
更新時間:2015年08月26日 12:11:35 作者:我心依舊
這篇文章主要介紹了C#編程實現(xiàn)自定義熱鍵的方法,涉及C#鍵盤按鍵設置的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了C#編程實現(xiàn)自定義熱鍵的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Net; using System.Drawing.Drawing2D; namespace App { public partial class Form2 : Form { public Form2() { 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); }; } protected override void WndProc(ref Message m) { //如果m.Msg的值為0x0312那么表示用戶按下了熱鍵 const int WM_HOTKEY = 0x0312; switch (m.Msg) { case WM_HOTKEY: ProcessKey(m); break; } base.WndProc(ref m); } /// <summary> /// 按下熱鍵的操作 /// </summary> /// <param name="m"></param> protected void ProcessKey(Message m) { //IntPtr用于表示指針或句柄的平臺特定類型 string id = m.WParam.ToString(); MessageBox.Show(id); switch (id) { case "100": // break; case "200": break; case "300": break; case "400": break; } } } public class CustomSystemKeyBoard { /// <summary> /// 聲明API函數(shù) /// </summary> /// <param name="hWnd">Handle</param> /// <param name="id">熱鍵id</param> /// <param name="fsModifiers">熱鍵類型(KeyModifiers)</param> /// <param name="vk">鍵盤按鍵</param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool RegisterHotKey( IntPtr hWnd, int id, uint fsModifiers, Keys vk ); /// <summary> /// 聲明API函數(shù) /// </summary> /// <param name="hWnd"></param> /// <param name="id"></param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool UnregisterHotKey(IntPtr hWnd, int id); /// <summary> /// 定義一個KeyModifiers的枚舉,以便出現(xiàn)組合鍵 /// </summary> public enum KeyModifiers { None = 0, Alt = 1, Control = 2, Shift = 3, Windows = 8 } } }
希望本文所述對大家的C#程序設計有所幫助。
相關文章
C# VB 實現(xiàn)10進制 16進制之間互相轉(zhuǎn)換
如何將10進制轉(zhuǎn)成16進制,又如何將16進制數(shù)轉(zhuǎn)成10進制,本文將介紹C#和VB實現(xiàn)代碼,需要了解的朋友可以參考下2012-11-11Unity3D利用DoTween實現(xiàn)卡牌翻轉(zhuǎn)效果
這篇文章主要為大家詳細介紹了Unity3D利用DoTween實現(xiàn)卡牌翻轉(zhuǎn)效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-02-02C#實現(xiàn)讀取DataSet數(shù)據(jù)并顯示在ListView控件中的方法
這篇文章主要介紹了C#實現(xiàn)讀取DataSet數(shù)據(jù)并顯示在ListView控件中的方法,涉及C#操作DataSet及ListView控件的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10C#中FormClosing與FormClosed的區(qū)別詳細解析
本文是對C#中FormClosing與FormClosed的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10