zoukankan      html  css  js  c++  java
  • 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); 
                    }
     

                    

            }
     
    }
  • 相关阅读:
    Leetcode 第135场周赛解题报告
    程序员如何当好面试者
    程序员如何当好面试官
    Leetcode 第133场周赛解题报告
    如何高效工作——团队篇
    程序员如何高效工作——个人软件篇
    程序员如何高效工作——个人硬件篇
    HTTP协议:从原理到流程|乐字节
    Tomcat详解|乐字节
    说说Java Web中的Web应用程序|乐字节
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204994.html
Copyright © 2011-2022 走看看