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 } } 原文及完整版代码下载地址