C#的 WinForm 如何注册系统热键,就像QQ那样  

其实很简单,只要调用api就成,代码如下:

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); 
                 }  
 
                 
 
         }  
 } 

请订阅本站 RSS feed 订阅到信箱 ,欢迎 Donate 或者 上面的广告内容 支持三十岁

本文链接:C#的 WinForm 如何注册系统热键,就像QQ那样

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
评论关闭