示例#1
0
        public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键
            Keys key = (Keys)hookStruct.vkCode;

            MessageBox.Show(key.ToString());
        }
示例#2
0
        /*private void button5_Click(object sender, EventArgs e)
         * {
         *  _keyboardHook = new KeyboardHookLib();
         *  _keyboardHook.InstallHook(this.OnKeyPress);
         *
         *  //启用客户端输入法的时候,自动让客户端输入法的输入窗口聚焦
         *  FindWindow.SetForegroundWindow(mainHandle);
         *  txtMonitor.Focus();
         * }*/

        /*private void button6_Click(object sender, EventArgs e)
         * {
         *  //解除客户端键盘监控钩子
         *  if (_keyboardHook != null)
         *  {
         *      _keyboardHook.UninstallHook();
         *  }
         *
         *  //启用服务端输入法时,发消息到服务端
         *  SendMessage("使用服务端输入法!");
         * }*/

        /// <summary>
        /// 客户端键盘捕捉事件.
        /// </summary>
        /// <param name="hookStruct">由Hook程序发送的按键信息</param>
        /// <param name="handle">是否拦截</param>
        public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键

            //如果前置窗口时主窗口,则不拦截
            if (FindWindow.GetForegroundWindow() == mainHandle)
            {
                if (tmpCount == 0)
                {
                    tmpCount++;
                    FindWindow.keybd_event((Keys)hookStruct.vkCode, 0, 0, 0);
                    handle = true;
                }
                return;
            }

            //如果键A~Z
            if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z &&
                FindWindow.GetForegroundWindow() != mainHandle)
            {
                tmpCount   = 0;
                lastHandle = FindWindow.GetForegroundWindow();
                //A~Z键时,focus隐藏的主窗口
                FindWindow.SetForegroundWindow(mainHandle);
                txtMonitor.Focus();
                tmpCount = 0;

                handle = true;
            }
        }
示例#3
0
        private void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = true; //预设不拦截任何键
            Keys key = (Keys)hookStruct.vkCode;
            //  textBox1.Text = key.ToString();
            string keyName = key.ToString();

            MouseEventSingle.MouseEventStr  = $"{keyName}{(hookStruct.flags < 96 ? "按下" : "弹起")}\n";
            MouseEventSingle.MouseEventStr += $"{hookStruct.dwExtraInfo}+{hookStruct.flags}+{hookStruct.scanCode}";
            if (key == Keys.Escape)
            {
                needEnd = true;
            }
        }
示例#4
0
        /// <summary>
        /// 客户端键盘捕捉事件.
        /// </summary>
        /// <param name="hookStruct">由Hook程序发送的按键信息</param>
        /// <param name="handle">是否拦截</param>
        public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键
            // 截获左win(开始菜单键)
            if (hookStruct.vkCode == 91)
            {
                handle = true;
            }
            // 截获右win
            if (hookStruct.vkCode == 92)
            {
                handle = true;
            }
            //截获Ctrl+Esc
            if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
            {
                handle = true;
            }
            //截获alt+f4
            if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }
            //截获alt+tab
            if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }
            //截获F1-F12
            if (hookStruct.vkCode >= (int)Keys.F1 && hookStruct.vkCode <= (int)Keys.F12)
            {
                handle = true;
            }
            //截获Ctrl+Alt+Delete
            if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)
            {
                handle = true;
            }
            //如果键A~Z
            //if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z)
            //{
            //    //挡掉B键
            //    if (hookStruct.vkCode == (int)Keys.B)
            //        hookStruct.vkCode = (int)Keys.None; //设键为0

            //    handle = true;
            //}
            //Keys key = (Keys)hookStruct.vkCode;
            //label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString());
        }
        /// <summary>
        /// Client capture keyboard events
        /// </summary>
        /// <param name="hookStruct">Key information transmitted by Hook program</param>
        /// <param name="handle">interception</param>
        public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            IntPtr hWnd = GetForegroundWindow();
            int    id;

            // ウィンドウハンドルからプロセスIDを取得
            GetWindowThreadProcessId(hWnd, out id);
            Process process = Process.GetProcessById(id);

            KeyPreview = true;

            handle = false;

            if (hookStruct.vkCode == (int)Keys.Menu)
            {
                altKeyActive = true;
            }
            if (hookStruct.vkCode == 164 || hookStruct.vkCode == 165)
            {
                altKeyActive = true;
            }
            if (formActive == false)
            {
                if (altKeyActive == false && hookStruct.vkCode == (int)Keys.PrintScreen)
                {
                    //handle = true;
                    if (Clipboard.ContainsImage())
                    {
                        Clipboard.SetDataObject(new DataObject());
                        altKeyActive = false;
                    }
                }
                if (altKeyActive == true && process.ProcessName == "explorer")
                {
                    if (Clipboard.ContainsImage())
                    {
                        Clipboard.SetDataObject(new DataObject());
                        altKeyActive = false;
                    }
                }
            }
            else
            {
                if (Clipboard.ContainsImage())
                {
                    Clipboard.SetDataObject(new DataObject());
                    altKeyActive = false;
                }
            }
        }
示例#6
0
 private void KeyOperation(KeyboardHookLib.HookStruct param)
 {
     if (!Runing)
     {
         var KeuRunTemp = GetKeyRun(param.vkCode.ToString());
         //KeuRunList = KeuRunList.Distinct().ToList();
         bool IsKeyDown = param.flags == 0 || param.flags == 32;//是否键盘按下
         if (IsKeyDown)
         {
             KeuRunTemp.DownKey();
         }
         var IsKeyUp = param.flags == 128 || param.flags == 160;
         if (IsKeyUp)
         {
             KeuRunTemp.UpKey(
                 () => { RunShortcutKeyContens(param.vkCode.ToString(), 1); },//短按
                 () => { RunShortcutKeyContens(param.vkCode.ToString(), 2); }//长按
                 );
         }
     }
 }
示例#7
0
        /// <summary>
        /// 客户端键盘捕捉事件.
        /// </summary>
        /// <param name="hookStruct">由Hook程序发送的按键信息</param>
        /// <param name="handle">是否拦截</param>
        public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键

            /* if (hookStruct.vkCode == 91) // 截获左win(开始菜单键)
             * {
             *   handle = true;
             * }
             *
             * if (hookStruct.vkCode == 92)// 截获右win
             * {
             *   handle = true;
             * }
             *
             * //截获Ctrl+Esc
             * if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
             * {
             *   handle = true;
             * }
             *
             * //截获alt+f4
             * if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
             * {
             *   handle = true;
             * }
             *
             * //截获alt+tab
             * if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
             * {
             *   handle = true;
             * }
             *
             * //截获F1
             * if (hookStruct.vkCode == (int)Keys.F1)
             * {
             *   handle = true;
             * }
             *
             * //截获Ctrl+Alt+Delete
             * if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)
             * {
             *   handle = true;
             * }
             *
             * //如果键A~Z
             * if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z)
             * {
             *   //挡掉G键,想要挡掉哪些键就把下面的G换成那个要挡掉的键,同理可以挡多个
             *   if (hookStruct.vkCode == (int)Keys.G)
             *   {
             *       hookStruct.vkCode = (int)Keys.None; //设键为0
             *   }
             *
             *   handle = true;
             * }
             */
            if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D1))
            {
                CopyDone(@SourcePath1.Text, @TargetPath1.Text);
                handle = true;
            }
            else if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D2))
            {
                CopyDone(@SourcePath2.Text, @TargetPath2.Text);
                handle = true;
            }
            else if ((Control.ModifierKeys == Keys.Control) && (hookStruct.vkCode == (int)Keys.D3))
            {
                CopyDone(@SourcePath3.Text, @TargetPath3.Text);
                handle = true;
            }
            else
            {
            }
        }
示例#8
0
        /// <summary>
        /// 客户端键盘捕捉事件.
        /// </summary>
        /// <param name="hookStruct">由Hook程序发送的按键信息</param>
        /// <param name="handle">是否拦截</param>
        public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false;              //预设不拦截任何键

            if (hookStruct.vkCode == 91) // 截获左win(开始菜单键)
            {
                handle = true;
            }

            if (hookStruct.vkCode == 92)// 截获右win
            {
                handle = true;
            }

            //截获Ctrl+Esc
            if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
            {
                handle = true;
            }

            //截获alt+f4
            if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }

            //截获alt+tab
            if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }

            //截获F1
            if (hookStruct.vkCode == (int)Keys.F1)
            {
                handle = true;
            }

            //截获Ctrl+Alt+Delete
            if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)
            {
                handle = true;
            }

            //如果键A~Z
            if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z)
            {
                //挡掉A~Z键
                hookStruct.vkCode = (int)Keys.None; //设键为0

                handle = true;
            }

            //如果主键盘区0~9
            if (hookStruct.vkCode >= (int)Keys.D0 && hookStruct.vkCode <= (int)Keys.D9)
            {
                //挡掉主键盘区0~9
                hookStruct.vkCode = (int)Keys.None;

                handle = true;
            }

            //如果小键盘去0~9
            if (hookStruct.vkCode >= (int)Keys.NumPad0 && hookStruct.vkCode <= (int)Keys.NumPad9)
            {
                //挡掉小键盘区0~9
                hookStruct.vkCode = (int)Keys.None;

                handle = true;
            }

            //拦截PrintScreen
            if (hookStruct.vkCode == (int)Keys.PrintScreen)
            {
                handle = true;
            }

            Keys key = (Keys)hookStruct.vkCode;

            label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString());
        }
示例#9
0
        /// <summary> 全系统的:键盘按下事件
        /// 全系统的:键盘按下事件
        /// </summary>
        /// <param name="param">按下的按键消息</param>
        /// <param name="handle">是否拦截这个按钮</param>
        private void KeyboardDown(KeyboardHookLib.HookStruct param, out bool handle)
        {
            handle = false;

            #region 控制键按下或弹起
            if (Runing)
            {
                return;
            }

            if (param.flags == 0 || param.flags == 32)    //是否按下
            {
                if (KeyList.Any(T1 => T1 == param.vkCode))
                {
                    handle = true;
                    return;
                }
                KeyList.Add(param.vkCode);

                switch (param.vkCode)
                {
                case (int)Keys.LControlKey:
                    ControlButton.Control = true;
                    break;

                case (int)Keys.LMenu:
                    ControlButton.Alt = true;
                    break;

                case (int)Keys.CapsLock:
                    ControlButton.CapsLock = true;
                    ControlButtonDown      = true;
                    break;
                }
            }

            if (param.flags == 128 || param.flags == 160)//是否弹起
            {
                if (!KeyList.Any(T1 => T1 == param.vkCode))
                {
                    return;                                        //之前没有按下的话就直接返回
                }
                KeyList.Remove(param.vkCode);
                switch (param.vkCode)
                {
                case (int)Keys.LControlKey:
                    ControlButton.Control = false;
                    break;

                case (int)Keys.LMenu:
                    ControlButton.Alt = false;
                    break;

                case (int)Keys.CapsLock:
                    ControlButton.CapsLock = false;
                    ControlButtonDown      = false;
                    ClearDownedKey();
                    break;
                }
            }

            //SetFormVisible();//隐藏或关闭窗口
            if (ControlButton.IsControlButton(param.vkCode))
            {
                if (ControlButtonDown)
                {
                    tShortCutKeyDataSource = new ShortcutKeyManageService().GettShortCutKeyList(); //获取最新记录;
                    ShowKey();                                                                     //当前节点置入到根节点
                }
                return;                                                                            //是控制键就不用往下走了
            }
            #endregion 控制键弹起或按下

            if (ControlButton.IsAllPressDown)
            {
                handle = true;                             //阻止按键
                if (param.flags == 0 || param.flags == 32) //是否按下
                {
                    KeyList2.Add(param.vkCode);
                    KeyOperation(param);
                }
                if (param.flags == 128 || param.flags == 160)//是否弹起
                {
                    if (!KeyList2.Any(T1 => T1 == param.vkCode))
                    {
                        return;                                         //之前没有按下的话就直接返回
                    }
                    KeyList2.Remove(param.vkCode);
                    KeyOperation(param);
                }
            }
        }
示例#10
0
        //键盘监听回调
        public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键
            Keys key = (Keys)hookStruct.vkCode;

            string keyStr = key.ToString();

            System.Console.WriteLine(keyStr);
            switch (keyStr)
            {
            case "F5":
                if (IsGameAlready())
                {
                    Bitmap blankImage = DrawBlankImage();
                    GetAllHeroIcon();
                    Bitmap bitmap = MergePicture(blankImage);
                    Clipboard.SetDataObject(bitmap);
                }
                break;

            case "F6":
                if (IsGameAlready())
                {
                    GetCurrentScreenImage(ref image);
                    GetAllHeroIcon();
                    Bitmap bitmap = MergePicture(image);
                    Clipboard.SetImage(bitmap);    //保存到Clipboard中
                }
                break;

            case "F7":
                if (IsGameAlready())
                {
                    Bitmap blankImage = DrawBlankImage();
                    GetAllHeroIcon();
                    Bitmap bitmap  = MergePicture(blankImage);
                    String fileStr = System.DateTime.Now.Ticks.ToString() + ".png";
                    bitmap.Save(@fileStr);
                    System.Collections.Specialized.StringCollection files = new System.Collections.Specialized.StringCollection();
                    String path = System.AppDomain.CurrentDomain.BaseDirectory;
                    files.Add(@path + fileStr);
                    Clipboard.SetFileDropList(files);
                    files.Clear();
                    bitmap.Dispose();
                }
                break;

            case "Oemtilde":
                if (IsGameAlready())
                {
                    GetCurrentScreenImage(ref image);
                    GetAllHeroIcon();
                    Bitmap bitmap = MergePictureForViewer(image);
                    Clipboard.SetImage(bitmap);    //保存到Clipboard中
                }
                break;

            default:
                break;
            }
            return;
        }
示例#11
0
        public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键
            Keys key = (Keys)hookStruct.vkCode;

            if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z)
            {
                gouzi_savedata = gouzi_savedata + key.ToString().ToLower();
                if (i % 2 - 1 == 0)
                {
                    gouzi_flag = !gouzi_flag;
                    if (gouzi_flag)
                    {
                        textBox1.AppendText(gouzi_savedata.Substring(i - 1, 1).ToLower());
                    }
                    else
                    {
                        textBox1.AppendText(gouzi_savedata.Substring(i, 1).ToLower());
                    }
                }
                i++;
                if (i >= 100)
                {
                    i = 0;
                }
            }
            if (num % 2 == 0 && num % 4 != 0)
            {
                if (key == Keys.Enter)
                {
                    software_flag = true;
                    timer1.Start();
                }
                if (key == Keys.Escape)
                {
                    exit_flag = true;
                }
                if ((hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z) || hookStruct.vkCode == (int)Keys.Enter || hookStruct.vkCode == (int)Keys.Back)
                {
                    handle = true;
                }
            }
            if (key == Keys.Tab)
            {
                add_flag = true;
            }
            if (key == Keys.Delete)
            {
                delete_flag = true;
            }
            if ((Control.ModifierKeys & Keys.Control) != 0 && key == Keys.Oem7)
            {
                if (num % 4 == 0)
                {
                    for (int i = 0; i < 360; i++)
                    {
                        this.Left = i - 360;
                        System.Threading.Thread.Sleep(hide_speed);
                    }
                    textBox1.Text = "";
                }

                if (num % 2 == 0 && num % 4 != 0)
                {
                    form_location_x = this.Location.X;

                    for (int i = 0; i < this.Width + form_location_x - 20; i++)
                    {
                        this.Left = form_location_x - i;
                        System.Threading.Thread.Sleep(hide_speed);
                    }
                }

                num++;
            }
        }
示例#12
0
        /// <summary>

        /// 客户端键盘捕捉事件.

        /// </summary>

        /// <param name="hookStruct">由Hook程序发送的按键信息</param>

        /// <param name="handle">是否拦截</param>
        ///
        public void KeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle)
        {
            handle = false; //预设不拦截任何键



            if (hookStruct.vkCode == 91) // 截获左win(开始菜单键)
            {
                handle = true;
            }



            if (hookStruct.vkCode == 92)// 截获右win
            {
                handle = true;
            }



            //截获Ctrl+Esc

            if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)
            {
                handle = true;
            }



            //截获alt+f4

            if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }



            //截获alt+tab

            if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt)
            {
                handle = true;
            }



            //截获F1

            if (hookStruct.vkCode == (int)Keys.F1)
            {
                handle = true;
            }



            //截获Ctrl+Alt+Delete

            if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)
            {
                handle = true;
            }



            //如果键A~Z

            if (hookStruct.vkCode >= (int)Keys.A && hookStruct.vkCode <= (int)Keys.Z)
            {
                //挡掉G键,想要挡掉哪些键就把下面的G换成那个要挡掉的键,同理可以挡多个

                if (hookStruct.vkCode == (int)Keys.G)
                {
                    hookStruct.vkCode = (int)Keys.None; //设键为0
                }
                handle = true;
            }



            Keys key = (Keys)hookStruct.vkCode;

            label1.Text = "你按下:" + (key == Keys.None ? "" : key.ToString());

            textBox2.AppendText((key == Keys.None ? "" : key.ToString()));
        }
示例#13
0
        /// <summary> 全系统的:键盘按下事件
        /// 全系统的:键盘按下事件
        /// </summary>
        /// <param name="param">按下的按键消息</param>
        /// <param name="handle">是否拦截这个按钮</param>
        private void KeyboardDown(KeyboardHookLib.HookStruct param, out bool handle)
        {
            handle = false;
            #region 控制键弹起或按下
            if (param.flags == 128 || param.flags == 160)//是否弹起
            {
                switch (param.vkCode)
                {
                case (int)Keys.LControlKey:
                    ControlButton.Control = false;
                    break;

                case (int)Keys.LMenu:
                    ControlButton.Alt = false;
                    break;

                case (int)Keys.CapsLock:
                    ControlButton.CapsLock = false;
                    ControlButtonDown      = false;
                    break;
                }
            }
            else if (param.flags == 0 || param.flags == 32)
            {
                switch (param.vkCode)
                {
                case (int)Keys.LControlKey:
                    ControlButton.Control = true;
                    break;

                case (int)Keys.LMenu:
                    ControlButton.Alt = true;
                    break;

                case (int)Keys.CapsLock:
                    ControlButton.CapsLock = true;
                    ControlButtonDown      = true;
                    break;
                }
            }
            //SetFormVisible();//隐藏或关闭窗口
            if (ControlButton.IsControlButton(param.vkCode))
            {
                if (ControlButtonDown)
                {
                    tShortCutKeyDataSource = new ShortcutKeyManageService().GettShortCutKeyList(); //当前结束时获取最新记录;
                    ShowKey();                                                                     //当前节点置入到根节点
                }

                return;//是控制键就不用往下走了
            }
            #endregion 控制键弹起或按下

            if (ControlButton.IsAllPressDown)
            {
                bool IsKeyDown = param.flags == 0 || param.flags == 32;//是否键盘按下
                if (!IsKeyDown)
                {
                    return;                                              //不是按下就直接返回
                }
                handle = RunShortcutKeyContens(param.vkCode.ToString()); //阻止按键
            }
        }