首页 > 编程 > C# > 正文

C#编程实现自定义热键的方法

2020-01-24 01:29:58
字体:
来源:转载
供稿:网友

本文实例讲述了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#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表