C#WinForm系統熱鍵的注冊與解除

本文介绍如何在应用程序中注册及取消注册热键,并通过实例演示了如何定义热键标识符和修饰符,以及如何处理热键消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.API申明

        //註冊系統熱鍵
        [DllImport("user32.dll", SetLastError = true)]
        
public static extern bool RegisterHotKey(IntPtr hWnd, // handle to window    
            int id, // hot key identifier    
            KeyModifiers fsModifiers,  // key-modifier options    
            Keys vk            // virtual-key code    
            );
        
//解除註冊熱鍵
        [DllImport("user32.dll", SetLastError = true)]
        
public static extern bool UnregisterHotKey(IntPtr hWnd, // handle to window    
            int id      // hot key identifier    
            );

2.定義並注冊熱鍵

        [Flags()]
        
public enum KeyModifiers
        {   
//這是熱鍵的定義  alt+crtl是3  直接相加就可以了
            None = 0,
            Alt 
= 1,
            Control 
= 2,
            Shift 
= 4,
            Windows 
= 8
        }
 
private void MainForm_Load(object sender, System.EventArgs e)
        {
   
//handle:這個窗體的handle   100:這個熱鍵的標誌id    3:crtl+alt鍵   H: h鍵
                bool success = RegisterHotKey(Handle, 100, KeyModifiers.Control | 

KeyModifiers.Alt, Keys.H);
         }

3.解除注冊熱鍵

 private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            
//handle:這個窗體的handle   100:上面那個熱鍵的標誌id  
            UnregisterHotKey(Handle, 100);
        }

4.根據熱鍵處理消息

        protected override void WndProc(ref Message m)
        {
            
const int WM_HOTKEY = 0x0312;//這個是window消息定義的   註冊的熱鍵消息

            
if (m.Msg == WM_HOTKEY)
            {
                
if (m.WParam.ToString().Equals("100"))  //如果是我們註冊的那個熱鍵
                {
                    
//這裡寫按下自寶義熱鍵後的代碼
                }
            }

            
base.WndProc(ref m);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值