zoukankan      html  css  js  c++  java
  • 给你的程序增加热键(C#)

    Form1.cs

                private void Form1_Load(object sender, System.EventArgs e)
                {
                      // 设置热键
                      SetHotKey(false, false, false,false,Keys.Space );
                }
               
                private bool key_Ctrl = false;
                private bool key_Shift = false;
                private bool key_Alt = false;
                private bool key_Windows = false;
                private Keys   key_other;

                public void SetHotKey(bool bCtrl,bool bShift,bool bAlt,bool  bWindows,Keys nowKey)
                {
                      try
                      {
                            this.key_Alt = bAlt;
                            this.key_Ctrl = bCtrl;
                            this.key_Shift = bShift;
                            this.key_Windows = bWindows;
                            this.key_other = nowKey;
               
                            WinHotKey.KeyModifiers modifier = WinHotKey.KeyModifiers.None;
               
                            if( this.key_Ctrl )
                                  modifier |= WinHotKey.KeyModifiers.Control;
                            if(this.key_Alt )
                                  modifier |= WinHotKey.KeyModifiers.Alt;
                            if(this.key_Shift)
                                  modifier |= WinHotKey.KeyModifiers.Shift;
                            if(this.key_Windows)
                                  modifier |= WinHotKey.KeyModifiers.Windows;
               
                            WinHotKey.RegisterHotKey(Handle,100,modifier,nowKey);
                      }
                      catch
                      {
                            MessageBox.Show ("快捷键定义错误!");
                      }
                }
               
                protected override void WndProc(ref Message msg )
                {
                      const int WM_HOTKEY =  0x0312; // 热键消息

                      if (msg.Msg != WM_HOTKEY)
                      {
                            base.WndProc(ref msg);
                      }
                      else
                      {
                            MessageBox.Show("Hotkey pressed"); //激活热键
                            // ProcessHotKey();
                      }
                }

                private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
                {
                      WinHotKey.UnregisterHotKey(Handle, 100);      // 注销热键
                }


    WinHotKey.cs

          public class WinHotKey
          {
                public WinHotKey()
                {
               
                }

                [DllImport("user32.dll",SetLastError=true)]
                public static extern bool RegisterHotKey(
                      IntPtr hWnd,
                      int id,
                      KeyModifiers fsModifiers,
                      Keys vk
                      );

                [DllImport("user32.dll",SetLastError=true)]
                public static extern bool UnregisterHotKey(
                      IntPtr hWnd,
                      int id
                      );

                [Flags()]
                public enum KeyModifiers
                {
                      None = 0,
                      Alt = 1,
                      Control =2,
                      Shift = 4,
                      Windows = 8
                }

          }

    完整源码下载
  • 相关阅读:
    【转】做好测试计划和测试用例工作的关键
    【转】RESTful Web Services初探
    最快排序和搜索算法的最简代码实现_转
    排序算法
    libevent简述
    linux异步IO--aio
    长志气戒傲气 必须时刻保持冷静
    LACP-链路聚合
    AM335x移植linux内核_转
    4种用于构建嵌入式linux系统的工具_转
  • 原文地址:https://www.cnblogs.com/top5/p/1634948.html
Copyright © 2011-2022 走看看