예제 #1
0
 /// <summary>
 /// Detach the keyboard hook; call during shutdown to prevent calls as we unload
 /// </summary>
 private static void DetachKeyboardHook()
 {
     if (_hookID != IntPtr.Zero)
     {
         InterceptKeys.UnhookWindowsHookEx(_hookID);
     }
 }
예제 #2
0
 public App()
 {
     ShutdownMode              = ShutdownMode.OnExplicitShutdown;
     Application.Current.Exit += new ExitEventHandler(Current_Exit);
     try
     {
         _hookID = InterceptKeys.SetHook(_proc);
     }
     catch
     {
         DetachKeyboardHook();
     }
 }
예제 #3
0
 public App()
 {
     ShutdownMode = ShutdownMode.OnExplicitShutdown;
     try
     {
         _hookID = InterceptKeys.SetHook(_proc);
     }
     catch
     {
         if (_hookID != IntPtr.Zero)
         {
             InterceptKeys.UnhookWindowsHookEx(_hookID);
         }
     }
 }
예제 #4
0
        public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                bool alt     = (WinForms.Control.ModifierKeys & Keys.Alt) != 0;
                bool control = (WinForms.Control.ModifierKeys & Keys.Control) != 0;

                int  vkCode = Marshal.ReadInt32(lParam);
                Keys key    = (Keys)vkCode;

                if (alt && key == Keys.F4)
                {
                    Application.Current.Shutdown();
                    return((IntPtr)1); // Handled.
                }

                if (!AllowKeyboardInput(alt, control, key))
                {
                    return((IntPtr)1); // Handled.
                }
            }

            return(InterceptKeys.CallNextHookEx(_hookID, nCode, wParam, lParam));
        }
예제 #5
0
        public static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                bool Alt     = (WinForms.Control.ModifierKeys & Keys.Alt) != 0;
                bool Control = (WinForms.Control.ModifierKeys & Keys.Control) != 0;

                //Prevent ALT-TAB and CTRL-ESC by eating TAB and ESC. Also kill Windows Keys.
                int  vkCode = Marshal.ReadInt32(lParam);
                Keys key    = (Keys)vkCode;

                if (Alt && key == Keys.F4)
                {
                    Application.Current.Shutdown();
                    return((IntPtr)1); //handled
                }
                if (key == Keys.LWin || key == Keys.RWin)
                {
                    return((IntPtr)1);                                 //handled
                }
                if (Alt && key == Keys.Tab)
                {
                    return((IntPtr)1);                     //handled
                }
                if (Alt && key == Keys.Space)
                {
                    return((IntPtr)1);                      //handled
                }
                if (Control && key == Keys.Escape)
                {
                    return((IntPtr)1);
                }
                if (key == Keys.None)
                {
                    return((IntPtr)1);              //handled
                }
                if (key <= Keys.Back)
                {
                    return((IntPtr)1);              //handled
                }
                if (key == Keys.Menu)
                {
                    return((IntPtr)1);               //handled
                }
                if (key == Keys.Pause)
                {
                    return((IntPtr)1);               //handled
                }
                if (key == Keys.Help)
                {
                    return((IntPtr)1);              //handled
                }
                if (key == Keys.Sleep)
                {
                    return((IntPtr)1);               //handled
                }
                if (key == Keys.Apps)
                {
                    return((IntPtr)1);              //handled
                }
                if (key >= Keys.KanaMode && key <= Keys.HanjaMode)
                {
                    return((IntPtr)1);                                           //handled
                }
                if (key >= Keys.IMEConvert && key <= Keys.IMEModeChange)
                {
                    return((IntPtr)1);                                                 //handled
                }
                if (key >= Keys.BrowserBack && key <= Keys.BrowserHome)
                {
                    return((IntPtr)1);                                                //handled
                }
                if (key >= Keys.MediaNextTrack && key <= Keys.OemClear)
                {
                    return((IntPtr)1);                                                //handled
                }
                Debug.WriteLine(vkCode.ToString() + " " + key);
            }
            return(InterceptKeys.CallNextHookEx(_hookID, nCode, wParam, lParam));
        }