这段代码对可以在任何时候得到指定的按键时间,你会有用的:

private void Form1_Load(object sender, System.EventArgs e)
         {
   
             Keys m_hotkey=Keys.Home;
             SetHotKey(m_hotkey, false,false,false,false);
         }         protected override void WndProc( ref Message m )
         { 
             const int WM_HOTKEY = 0x0312;  
             
             switch(m.Msg) 
             { 
                 case WM_HOTKEY:  
                     MessageBox.Show("您点了home键!"); 
                     break; 
             }  
             base.WndProc(ref m );
         }        public void SetHotKey(Keys c, bool bCtrl, bool bShift, bool bAlt, bool bWindows)
         {
     
             NativeWIN32.KeyModifiers modifiers = NativeWIN32.KeyModifiers.None;
             NativeWIN32.RegisterHotKey(Handle, 100, modifiers, c);
         }        public class NativeWIN32
         {
             public NativeWIN32()
             {}            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             static public extern IntPtr GetForegroundWindow();             [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
                 public struct STRINGBUFFER
             {
                 [MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
                 public string szText;
             }            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             public static extern int GetWindowText(IntPtr hWnd,  out STRINGBUFFER ClassName, int nMaxCount);            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);            public const int WM_SYSCOMMAND = 0x0112;
             public const int SC_CLOSE = 0xF060;            public delegate bool EnumThreadProc(IntPtr hwnd, IntPtr lParam);
            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             public static extern bool EnumThreadWindows(int threadId, EnumThreadProc pfnEnum, IntPtr lParam);            [DllImport("user32.dll", CharSet=CharSet.Auto)]
             public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr next, string sClassName, IntPtr sWindowTitle);             [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
             }         }