C#:自定义全局热键

发布时间:2026/9/30 17:11:59
C#:自定义全局热键 hotkey.csusing System; using System.Runtime.InteropServices; using System.Windows.Forms; public partial class Form1 : Form { // 1. 声明 API [DllImport(user32.dll, SetLastError true)] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); [DllImport(user32.dll, SetLastError true)] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); // 常量定义 private const int WM_HOTKEY 0x0312; private const uint MOD_CONTROL 0x0002; private const uint MOD_ALT 0x0001; private const uint MOD_SHIFT 0x0004; private const uint MOD_WIN 0x0008; private const uint MOD_NOREPEAT 0x4000; // 防止长按重复触发 private const int HOTKEY_ID 100; // 热键唯一ID public Form1() { // 注意不要在构造函数里注册等窗体句柄创建完成后再注册 this.Load Form1_Load; this.FormClosed Form1_FormClosed; } private void Form1_Load(object sender, EventArgs e) { // 2. 注册热键Ctrl Alt F12 bool success RegisterHotKey(this.Handle, HOTKEY_ID, MOD_CONTROL | MOD_ALT | MOD_NOREPEAT, 0x7B); // 0x7B F12 if (!success) { MessageBox.Show(热键注册失败可能已被其他程序占用。); } } // 3. 重写 WndProc 捕获热键消息 protected override void WndProc(ref Message m) { base.WndProc(ref m); // 必须调用基类 if (m.Msg WM_HOTKEY m.WParam.ToInt32() HOTKEY_ID) { // 在这里写你的业务逻辑建议用 BeginInvoke 异步处理避免阻塞 UI this.BeginInvoke((MethodInvoker)delegate { // 比如呼出窗口、显示通知等 this.Show(); this.WindowState FormWindowState.Normal; this.Activate(); }); } } // 4. 退出时注销热键 private void Form1_FormClosed(object sender, FormClosedEventArgs e) { UnregisterHotKey(this.Handle, HOTKEY_ID); } } static class Program { static void Main() { Application.Run(new Form1()); } }编译C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc /target:winexe /out:hotkey.exe hotkey.cs运行hotkey效果Ctrl Alt F12 显示窗口

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询