软件编程
位置:首页>> 软件编程>> C#编程>> C#编程实现自定义热键的方法

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

作者:我心依旧  发布时间:2023-12-05 23:57:18 

标签:C#,自定义,热键

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com