예제 #1
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));
        }
예제 #2
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));
        }