public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString());

                hotkeys.Add(k);

                if (hotkeys.Contains(Keys.LControlKey) && hotkeys.Contains(Keys.LMenu) && hotkeys.Contains(Keys.J))
                {
                    hotkeys.Clear();
                    BlockInput(false);
                    GlobalObj.isScreenLocked = false;
                    Tool.Log("键盘鼠标已解锁");
                }
                else if (hotkeys.Contains(Keys.LControlKey) && hotkeys.Contains(Keys.LMenu) && hotkeys.Contains(Keys.S))
                {
                    hotkeys.Clear();
                    BlockInput(true);
                    GlobalObj.isScreenLocked = true;
                    Tool.Log("键盘鼠标已锁定");
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #2
0
        //这里可以添加自己想要的信息处理
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                int v = kbh.vkCode;
                switch (v)
                {
                case 27:   //ESC键
                case 91:   //左徽标键
                case 92:   //右徽标键
                case 93:   //鼠标右键快捷键
                case 164:  //
                case 9:    //TAB键
                case 10:   //Shift键
                case 17:   //Ctrl键
                case 18:   //Alt键
                case 162:  //
                case 110:  //.键
                case 46:   //Delete键
                case 115:  //F4键
                    return(1);
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #3
0
        public static int KeyBoatdHookProc(int nCode, int wParam, IntPtr lParam)
        {
            Thread   thread1 = new Thread(StartCursor);
            SetPaint sp      = new SetPaint();

            sp.X    = Screen.PrimaryScreen.Bounds.Width;
            sp.Y    = Screen.PrimaryScreen.Bounds.Height;
            sp.rows = 0;
            //监控用户键盘输入
            KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
            Keys k = (Keys)Enum.Parse(typeof(Keys), input.vkCode.ToString());

            if (input.vkCode == (int)Keys.Control || input.vkCode == (int)Keys.Shift || input.vkCode == (int)Keys.F1)
            {
                thread1.IsBackground = true;
                IsStartThread        = true;
                thread1.Start(sp);
            }
            else if (input.vkCode == (int)Keys.Control || input.vkCode == (int)Keys.Shift || input.vkCode == (int)Keys.F2)
            {
                Hook_Clear();
                if (null != thread1)
                {
                    thread1.Abort();
                    IsStartThread = false;
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #4
0
        //这里可以添加自己想要的信息处理
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)

        {
            if (nCode >= 0)
            {
                // vkCode 是 下面的键位
                // https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.keys?view=netcore-3.1
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                var flag =
                    kbh.vkCode == 91 ||
                    kbh.vkCode == 92 ||
                    kbh.vkCode == 115 ||
                    kbh.vkCode == 18 ||
                    kbh.vkCode == 27 ||
                    kbh.vkCode == 17 ||
                    kbh.vkCode == 16 ||
                    kbh.vkCode == 46 ||
                    kbh.vkCode == 241 ||
                    kbh.vkCode == 122 ||
                    kbh.vkCode == 32;
                if (flag) //截获 Ctrl+ Esc + Shift + Delete + F1  + F11 + Space
                {
                    return(1);
                }

                //
                //if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab
                //{
                //    return 1;
                //}
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #5
0
        public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            // 侦听键盘事件
            if (nCode >= 0)
            {
                KeyBoardHookStruct MyKeyBoardHookStruct = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                if (OnKeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
                {
                    Keys         key = (Keys)MyKeyBoardHookStruct.vkCode;
                    KeyEventArgs e   = new KeyEventArgs(key);
                    OnKeyDownEvent(this, e);
                }

                // 这里写按下后做什么事
                if (MyKeyBoardHookStruct.flags == 0)
                {
                    switch (MyKeyBoardHookStruct.vkCode)
                    {
                    case (int)Keys.Oem3:        // ~ 键
                        // 打开输入框
                        //MessageBox.Show("~键");
                        if (GameWindowHwnd == GetForegroundWindow().ToInt32())
                        {
                            //InputWindow.Show();
                        }
                        else
                        {
                            if (InputWindowHwnd == GetForegroundWindow().ToInt32())
                            {
                            }
                        }
                        break;

                    case (int)Keys.Enter:       // 回车键
                        // 如果输入框打开且有字则发送并关闭
                        MessageBox.Show("回车键");
                        return(1);

                    case (int)Keys.Escape:      // Esc键
                        // 如果输入框打开则关闭
                        MessageBox.Show("Esc键");
                        break;

                    default:
                        // MessageBox.Show(MyKeyBoardHookStruct.vkCode.ToString());
                        break;
                    }
                }
                // 这里写弹起后做什么事
                if (MyKeyBoardHookStruct.flags == 128)
                {
                    switch (MyKeyBoardHookStruct.vkCode)
                    {
                    default:
                        break;
                    }
                }
            }
            return(CallNextHookEx(kbHook, nCode, wParam, lParam));
        }
Example #6
0
        private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
            bool bMaskKeysFlag     = false;

            switch (wParam)
            {
            case WM_KEYDOWN:
            case WM_KEYUP:
            case WM_SYSKEYDOWN:
            case WM_SYSKEYUP:
                bMaskKeysFlag = ((kbh.vkCode == VK_TAB) && (kbh.flags == 32))          /* Tab + Alt */
                                | ((kbh.vkCode == VK_ESCAPE) && (kbh.flags == 32))     /* Esc + Alt */
                                | ((kbh.vkCode == VK_F4) && (kbh.flags == 32))         /* F4 + Alt */
                                | ((kbh.vkCode == VK_LWIN) && (kbh.flags == 1))        /* Left Win */
                                | ((kbh.vkCode == VK_RWIN) && (kbh.flags == 1))        /* Right Win */
                                | ((kbh.vkCode == VK_ESCAPE) && (kbh.flags == 0));     /* Ctrl + Esc */
                break;

            default:
                break;
            }

            if (bMaskKeysFlag == true)
            {
                return(1);
            }
            else
            {
                return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
            }
        }
Example #7
0
        public int HookProc(int code, int wParam, ref KeyBoardHookStruct lParam)
        {
            if (code >= 0)
            {
                var key = (Keys)lParam.VkCode;
                if (HookedKeys.Contains(key))
                {
                    var Arg = new KeyEventArgs(key);
                    switch (wParam)
                    {
                    case WM_KEYDOWN:
                    case WM_SYSKEYDOWN:
                        KeyDown?.Invoke(this, Arg);
                        break;

                    case WM_KEYUP:
                    case WM_SYSKEYUP:
                        KeyUp?.Invoke(this, Arg);
                        break;
                    }

                    if (Arg.Handled)
                    {
                        return(1);
                    }
                }
            }

            return(CallNextHookEx(Hook, code, wParam, ref lParam));
        }
Example #8
0
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct        kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                System.Windows.Forms.Keys k   = (System.Windows.Forms.Keys)Enum.Parse(typeof(System.Windows.Forms.Keys), kbh.vkCode.ToString());
                switch (k)
                {
                case System.Windows.Forms.Keys.A:
                {
                    if (kbh.flags == 0)
                    {
                        // 这里写按下后做什么事
                    }
                    else if (kbh.flags == 128)
                    {
                        //放开后做什么事
                        //  ThreadProcess.ReadEagle();
                    }
                }
                break;
                }
            }

            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #9
0
 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString());
         switch (k)
         {
         case Keys.F2:
             if (kbh.flags == 0)
             {
                 // 这里写按下后做什么事
                 //Main.GB = true;
                 //MainForm.Fs(FormBorderStyle.FixedSingle);
                 //MainForm.StopAll = true;
                 //MainForm.DisMes("停止...");
                 //MainForm.Enb(true);
             }
             else if (kbh.flags == 128)
             {
                 //放开后做什么事
             }
             return(1);
         }
     }
     return(CallNextHookEx(hHook, nCode, wParam, lParam));
 }
Example #10
0
        //这里个函数里边写的是你需要拦截的内容 检测到按键之后要进行的操作
        public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                //这里开始判断按键 然后进行操作
                if (kbh.vkCode == (int)Keys.Q && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+Q
                {
                    if (this.Visible == false)
                    {
                        this.Visible = true;
                        Thread.Sleep(10);
                    }
                    else
                    {
                        this.Visible = false;
                        Thread.Sleep(10);
                    }
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.R && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+R
                {
                    this.Close();
                    return(1);
                }
            }

            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #11
0
        private int keyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            bool handled = false;

            if ((nCode >= 0) && (KeyDown != null || KeyUp != null || KeyPress != null))
            {
                KeyBoardHookStruct MyKeyboardHookStruct = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                if (KeyDown != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))
                {
                    Keys         keyData = (Keys)MyKeyboardHookStruct.vkCode;
                    KeyEventArgs e       = new KeyEventArgs(keyData);
                    KeyDown(this, e);
                    handled = handled || e.Handled;
                }

                if (KeyPress != null && wParam == WM_KEYDOWN)
                {
                    bool isDownShift    = ((GetKeyState(VK_SHIFT) & 0x80) == 0x80 ? true : false);
                    bool isDownCapslock = (GetKeyState(VK_CAPITAL) != 0 ? true : false);

                    byte[] keyState = new byte[256];
                    GetKeyboardState(keyState);
                    byte[] inBuffer = new byte[2];
                    if (ToAscii(MyKeyboardHookStruct.vkCode,
                                MyKeyboardHookStruct.scanCode,
                                keyState,
                                inBuffer,
                                MyKeyboardHookStruct.flags) == 1)
                    {
                        char key = (char)inBuffer[0];
                        if ((isDownCapslock ^ isDownShift) && Char.IsLetter(key))
                        {
                            key = Char.ToUpper(key);
                        }
                        KeyPressEventArgs e = new KeyPressEventArgs(key);
                        KeyPress(this, e);
                        handled = handled || e.Handled;
                    }
                }

                if (KeyUp != null && (wParam == WM_KEYUP || wParam == WM_SYSKEYUP))
                {
                    Keys         keyData = (Keys)MyKeyboardHookStruct.vkCode;
                    KeyEventArgs e       = new KeyEventArgs(keyData);
                    KeyUp(this, e);
                    handled = handled || e.Handled;
                }
            }

            if (handled)
            {
                return(1);
            }
            else
            {
                return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
            }
        }
Example #12
0
        //这里可以添加自己想要的信息处理
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                if (kbh.vkCode == 91)  // 截获左win(开始菜单键)
                {
                    return(1);
                }
                if (kbh.vkCode == 92)// 截获右win
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) //截获Alt+Esc
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+f4
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc
                {
                    return(1);
                }
                if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+空格
                {
                    return(1);
                }
                //if (kbh.vkCode == 241)                  //截获F1
                //{
                //    return 1;
                //}
                //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)      //截获Ctrl+Alt+Delete
                //{
                //    return 1;
                //}
                //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)      //截获Ctrl+Shift
                //{
                //    return 1;
                //}

                //if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt)  //截获Ctrl+Alt+空格
                //{
                //    return 1;
                //}
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #13
0
 static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString());
         hookHandle?.Invoke(k);
     }
     return(0);
 }
Example #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="nCode"></param>
 /// <param name="wParam"></param>
 /// <param name="lParam"></param>
 /// <returns></returns>
 private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         if (GetKeysCode != null)
         {
             GetKeysCode(kbh.vkCode);
         }
         return(1);
     }
     return(CallNextHookEx(hHook, nCode, wParam, lParam));
 }
Example #15
0
 /// <summary>
 /// 自己想要的信息处理
 /// </summary>
 /// <param name="nCode"></param>
 /// <param name="wParam"></param>
 /// <param name="lParam"></param>
 /// <returns></returns>
 private int KeyMouseHookProc(int nCode, Int32 wParam, IntPtr lParam)
 {
     if (keyeventhandler != null && nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP))
         {
             Keys         keyData = (Keys)kbh.vkCode;
             KeyEventArgs e       = new KeyEventArgs(keyData);
             keyeventhandler(this, e);
         }
     }
     return(1);
 }
Example #16
0
        public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString());
                if (kbh.flags == 0)
                {
                    hookEventHandler(k);
                }
            }

            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
        /// <summary>
        /// 屏蔽键盘
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        /// <returns></returns>
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin))
                {
                    return(1);
                }
                //屏蔽Ctrl+Esc
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
                {
                    return(1);
                }
                //屏蔽Alt+f4
                if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
                {
                    return(1);
                }
                ////屏蔽ctrl+alt+.
                //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt)
                //    return 1;
                //屏蔽Alt+Esc
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt)
                {
                    return(1);
                }
                //屏蔽Alt+apsce
                if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt)
                {
                    return(1);
                }
                //屏蔽Alt+Tab
                if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
                {
                    return(1);
                }
                //截获Ctrl+Shift+Esc
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)
                {
                    return(1);
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #18
0
        private object Hoodlock = new object();     //钩子线程锁
        #endregion

        /// <summary>
        /// 键盘钩子安装与卸载
        /// </summary>
        /// <param name="f">用户回掉函数</param>
        /// <param name="timer">用户定时函数对象</param>
        /// <param name="Keystart">用户启动记录模式</param>
        /// <param name="keyEnd">用户结束记录模式</param>
        public void HookKey_StartEnd(Function f) // 定义一个用来安装钩子的方法
        {
            if (hHookKey == 0)
            {
                //初始化回掉函数
                KeyboardHookProcedure = new HookProc((nCode, wParam, lParam) =>
                {
                    //获取键盘输入信息
                    KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                    //按下按键,并且有按键状态,是控制的窗体
                    if (nCode >= 0 && ((int)wParam == WM_KEYDOWN || (int)wParam == WM_KEYUP))
                    {
                        #region 封装必要信息和执行用户函数
                        customerhandle = new CustomerHandle()
                        {
                            function = f,
                            KeysCode = input.vkCode,
                            MouseXY  = -1,
                            state    = ((int)wParam == WM_KEYDOWN ? KeyMouseState.Down : KeyMouseState.Up)
                        };
                        //while (t.ThreadState == ThreadState.Background) ;//防止记录顺序冲突,有可能影响性能

                        t = new Thread(new ParameterizedThreadStart(KeyMouseThread));
                        t.IsBackground   = true;
                        t.ApartmentState = ApartmentState.STA;
                        t.Start((object)customerhandle);
                        #endregion
                    }
                    return(CallNextHookEx(hHookMouse, nCode, wParam, lParam));
                });//给委托变量赋初值

                //安装钩子
                hHookKey = SetWindowsHookEx(
                    13,                    //此钩子的类型为全局键盘钩子
                    KeyboardHookProcedure, //钩子子程(委托变量)
                    IntPtr.Zero,           //GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName),//表示全局钩子
                    0                      //表示全局钩子
                    );
            }
            else //卸载键盘钩子
            {
                UnhookWindowsHookEx(hHookKey); // 卸载钩子
                hHookKey = 0;
            }
        }
Example #19
0
 /// <summary>
 /// 屏蔽键盘
 /// </summary>
 /// <param name="nCode"></param>
 /// <param name="wParam"></param>
 /// <param name="lParam"></param>
 /// <returns></returns>
 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     // debug
     MessageBox.Show("Hook,屏蔽键盘");
     if (nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         // 屏蔽左"WIN"、右"Win"
         if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin))
         {
             return(1);
         }
         //屏蔽Ctrl+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
         {
             return(1);
         }
         //屏蔽Alt+f4
         if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //屏蔽Alt+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //屏蔽Alt+Tab
         if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //截获Ctrl+Shift+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)
         {
             return(1);
         }
         //截获Ctrl+Alt+Delete
         if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)
         {
             return(1);
         }
     }
     return(CallNextHookEx(hHook, nCode, wParam, lParam));
 }
        private int HookProc(int code, int wParam, ref KeyBoardHookStruct lParam)
        {
            if (code >= 0)
            {
                Keys currentKey = (Keys)lParam.vkCode;

                if (HookedKeys.Contains(currentKey))
                {
                    KeyEventArgs kArg = new KeyEventArgs(currentKey);

                    if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)
                    {
                        KeyDown?.Invoke(this, kArg);

                        if (!KeysHold.Contains(currentKey))
                        {
                            KeysHold.Add(currentKey);
                        }

                        Chords = KeysHold.Where(keyHold => keyHold != currentKey).ToList();
                    }
                    else if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP)
                    {
                        KeyUp?.Invoke(this, kArg);

                        if (!Chords.Contains(currentKey))
                        {
                            KeyPressed?.Invoke(this, kArg);
                        }

                        KeysHold.Remove(currentKey);
                        Chords.Remove(currentKey);

                        //KeyPressed?.Invoke(this, new KeyInfo(key, keysHold));
                    }

                    if (kArg.Handled)
                    {
                        return(1);
                    }
                }
            }
            return(CallNextHookEx(hookID, code, wParam, ref lParam));
        }
        /// <summary>
        /// 截取按键
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        /// <returns></returns>
        public static int KeyBoardHookGet(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt && kbh.vkCode == (int)Keys.O)
                {
                    MessageBox.Show("注销系统");
                    return(1);
                }
                //屏蔽Alt+apsce
                if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt)
                {
                    return(1);
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #22
0
 /// <summary>
 /// 屏蔽键盘
 /// </summary>
 /// <param name="nCode"></param>
 /// <param name="wParam"></param>
 /// <param name="lParam"></param>
 /// <returns></returns>
 public static int keyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         //添加自己的判断语句,如果符合要求的按键,就 return 1;
         //没有判断直接 return 1;那么就屏蔽所有按键除了ctrl+alt+del
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         // 屏蔽左"WIN"、右"Win"
         if ((kbh.vkCode == (int)Keys.LWin) || (kbh.vkCode == (int)Keys.RWin))
         {
             return(1);
         }
         //屏蔽Ctrl+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
         {
             return(1);
         }
         //屏蔽Alt+f4
         if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //屏蔽Alt+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //屏蔽Alt+Tab
         if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
         {
             return(1);
         }
         //截获Ctrl+Shift+Esc
         if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)
         {
             return(1);
         }
     }
     return(CallNextHookEx(hHook, nCode, wParam, lParam));
 }
Example #23
0
 public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
         Keys k = (Keys)Enum.Parse(typeof(Keys), kbh.vkCode.ToString());
         switch (k)
         {
         case Keys.F2:
             if (kbh.flags == 0)
             {
                 //这里写按下后做的事情
             }
             else if (kbh.flags == 128)
             {
                 //这里写放开后做什么事
             }
             return(1);
         }
     }
     return(CallNextHookEx(hHook, nCode, wParam, lParam));
 }
Example #24
0
        /// <summary>
        /// 获得键盘消息的函数
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam">记录键盘状态,是按下还是抬起</param>
        /// <param name="lParam">键值,但要通过一个显示转换获得,因此要先提供一个KEY_MSG类</param>
        /// <returns></returns>
        private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
            int keyChr             = ((char)kbh.vkCode);

            ////过滤
            if (this.IsFilter(keyChr))
            {
                return(1);
            }
            //替换
            int keyVal = this.ParseKeyChr(keyChr);

            if (wParam == 0x100)//键盘按下
            {
                keybd_event((byte)keyVal, 0, 0, 0);
                keybd_event((byte)keyVal, 0, KEYEVENTF_KEYUP, 0);
                return(1);
            }

            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
        private int KeyBoardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode < 0)
            {
                return(-1);
            }

            KeyBoardHookStruct keyDataFromHook = Marshal.PtrToStructure <KeyBoardHookStruct>(lParam);
            int keyData = keyDataFromHook.vkCode;

            if (wParam.ToInt32() == MSG_DEF.WM_KETDOWN || wParam.ToInt32() == MSG_DEF.WN_SYSKEYDOWN)
            {
                Key key = KeyInterop.KeyFromVirtualKey(keyData);
            }

            if (wParam.ToInt32() == MSG_DEF.WM_KEYUP || wParam.ToInt32() == MSG_DEF.WN_SYSKEYDOWN)
            {
                //
            }

            return(WinApiHelper.CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #26
0
        public int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                //键盘弹起取消钩子
                if (wParam == 257)
                {
                    GetCombineKeyEvent(new KeysInfo(this.lockKey, this.commonKey));
                    Hook_Clear();
                }
                else
                {
                    KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                    switch (kbh.vkCode)
                    {
                    case 160:   //LeftShift
                    case 161:   //RightShift
                    case 162:   //LeftCtrl
                    case 163:   //RightCtrl
                    case 164:   //LeftAlt
                    case 165:   //RightAlt
                    case 91:    //LeftWin
                    case 92:    //RightWin
                        if (!lockKey.Contains((uint)kbh.vkCode))
                        {
                            lockKey.Add((uint)kbh.vkCode);
                        }
                        return(1);

                    default:
                        commonKey = (uint)kbh.vkCode;
                        break;
                    }
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #27
0
        public static int KeyBoardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

            if (input.vkCode == (int)Keys.F11)
            {
                IntPtr ptr = GetForegroundWindow();
                if (ptr != IntPtr.Zero)
                {
                    if (dict.Count < 1)
                    {
                        ThreadStart threadStart = new ThreadStart(战士抖杀);
                        Thread      thread      = new Thread(threadStart);
                        thread.Start();
                        dict.Clear();
                        dict.Add("战士抖杀", thread);
                    }
                }
                return(1);
            }
            else if (input.vkCode == (int)Keys.F12)
            {
                foreach (var th in dict)
                {
                    Thread thread = th.Value;
                    if (thread != null && thread.IsAlive)
                    {
                        if (!thread.Join(3))
                        {
                            thread.Abort();
                        }
                    }
                }
                dict.Clear();
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }
Example #28
0
        /// <summary>
        /// 钩子回调函数,在这里屏蔽热键。
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        /// <returns></returns>
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                if (
                    //左边WIN键
                    kbh.vkCode == 91 ||
                    //右边WIN键
                    kbh.vkCode == 92 ||
                    //左边SHIFT键
                    kbh.vkCode == 160 ||
                    //右边SHIFT键
                    kbh.vkCode == 161 ||
                    //Ctrl+ESC
                    (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) ||
                    //ESC + Alt
                    (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Alt) ||
                    //ALT+F4
                    (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) ||
                    //Tab + Alt
                    (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) ||
                    //Ctrl + Alt + Delete
                    (kbh.vkCode == (int)Keys.Delete && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) ||
                    //Esc + Ctrl + Alt
                    (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt)

                    )
                {
                    return(1);
                }
            }

            return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
        }
 static extern int CallNextHookEx(IntPtr hhk, int code, int wParam, ref KeyBoardHookStruct lParam);
        /// <summary>
        /// 钩子处理
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam"></param>
        /// <param name="lParam"></param>
        /// <returns></returns>
        private int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));

                //钓鱼 ctrl t
                if (kbh.vkCode == (int)Keys.T &&
                    (int)System.Windows.Forms.Control.ModifierKeys == (int)Keys.Control)
                {
                    if (doubleAimKeyEvent)
                    {
                        doubleAimKeyEvent = false;
                    }
                    else
                    {
                        if (ifOpenTimer)
                        {
                            FishStop();
                            fishTimerBusy = true;
                            //ShowTimer.Stop();
                            ifOpenTimer = false;
                        }
                        else
                        {
                            FishStart();
                            fishTimerBusy = false;
                            fishTimer.Start();
                            ifOpenTimer = true;
                        }
                        doubleAimKeyEvent = true;
                    }

                    return(1);
                }

                //重置焦点 ctrl y
                if (kbh.vkCode == (int)Keys.Y &&
                    (int)System.Windows.Forms.Control.ModifierKeys == (int)Keys.Control)
                {
                    if (doubleAimKeyEvent)
                    {
                        doubleAimKeyEvent = false;
                    }
                    if (ifOpenTimer)
                    {
                        ifOpenTimer = false;
                    }

                    //添加了一个引用集队
                    fishX         = System.Windows.Forms.Control.MousePosition.X;
                    fishY         = System.Windows.Forms.Control.MousePosition.Y;
                    TextInfo.Text = fishX.ToString() + ", " + fishY.ToString();
                    fishTimerBusy = true;
                    //ShowTimer.Stop();

                    hdc = GetDC(IntPtr.Zero); uint pixel = GetPixel(hdc, fishX, fishY);
                    ReleaseDC(IntPtr.Zero, hdc);
                    this.colorInfo.Fill = new SolidColorBrush(Color.FromRgb((byte)(pixel & 0x000000FF), (byte)((pixel & 0x0000FF00) >> 8), (byte)((pixel & 0x00FF0000) >> 16)));

                    return(1);
                }
            }
            return(CallNextHookEx(hHook, nCode, wParam, lParam));
        }