本文實例講述了C#編程實現自定義熱鍵的方法。分享給大家供大家參考。具體實現方法如下:
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函數 /// </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函數 /// </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的枚舉,以便出現組合鍵 /// </summary> public enum KeyModifiers { None = 0, Alt = 1, Control = 2, Shift = 3, Windows = 8 } }}
希望本文所述對大家的C#程序設計有所幫助。
新聞熱點
疑難解答