Truly
写精彩代码 品暇逸人生

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
            }

      }

完整源码下载

posted on 2006-04-14 11:44  Truly  阅读(3193)  评论(0编辑  收藏  举报