WinForm 如何注册热键?

 Q:WinForm 如何注册热键?

A:

using    System; 
using    System.Collections.Generic; 
using    System.ComponentModel; 
using    System.Data; 
using    System.Drawing; 
using    System.Text; 
using    System.Windows.Forms; 
using    System.DirectoryServices; 
using    System.Runtime.InteropServices; 
namespace    test 

        
public     partial     class    Form1   :   Form 
        

                
class    HotKey 
                

                        
// 如果函数执行成功,返回值不为0。 
                        
// 如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。 
                        [DllImport(  " user32.dll  " ,   SetLastError    =     true )] 
                        
public     static     extern     bool    RegisterHotKey( 
                                IntPtr   hWnd,                                 
// 要定义热键的窗口的句柄 
                                 int    id,                                            // 定义热键ID(不能与其它ID重复)                       
                                KeyModifiers   fsModifiers,        // 标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 
                                Keys   vk                                            // 定义热键的内容 
                                ); 

                        [DllImport( 
" user32.dll  " ,   SetLastError    =     true )] 
                        
public     static     extern     bool    UnregisterHotKey( 
                                IntPtr   hWnd,                                 
// 要取消热键的窗口的句柄 
                                 int    id                                              // 要取消热键的ID 
                                ); 

                        
// 定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) 
                        [Flags()] 
                        
public     enum    KeyModifiers 
                        

                                None   
=     0
                                Alt   
=     1
                                Ctrl   
=     2
                                Shift   
=     4
                                WindowsKey   
=     8  
                        }
 
                }
 


                
public    Form1() 
                

                        InitializeComponent(); 
                        HotKey.RegisterHotKey(
this .Handle,    100 ,    0 ,   Keys.F1); 
                        
                }
 

                
protected     override     void    WndProc( ref    Message   m) 
                

                        
const     int    WM_HOTKEY    =     0x0312
                        
// 按快捷键   
                         switch    (m.Msg) 
                        

                                
case    WM_HOTKEY: 
                                        
switch    (m.WParam.ToInt32()) 
                                        

                                                
case     100
                                                        MessageBox.Show( 
" Press   F1  " ); 
                                                        
break
                                        }
 
                                        
break
                        }
 
                        
base .WndProc( ref    m); 
                }
 

                

        }
 
}
原文地址:https://www.cnblogs.com/cl1024cl/p/6204994.html