Esempio n. 1
0
 private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
         if (m.flags != 0)
         {
             if (_formMain._operatopnType == OperationType.Line)
             {
                 buttonLine.Focus();
             }
             else if (_formMain._operatopnType == OperationType.Rectangle)
             {
                 buttonRegtangle.Focus();
             }
             else if (_formMain._operatopnType == OperationType.Sketch)
             {
                 buttonSketch.Focus();
             }
             else if (_formMain._operatopnType == OperationType.Circle)
             {
                 buttonCircle.Focus();
             }
             else if (_formMain._operatopnType == OperationType.Stop)
             {
                 buttonfocus.Focus();
             }
             _formMain.Focus();
             m.flags++;
             return(1);
         }
         return(0);
     }
     return(CallNextHookEx(hKeyboarfHook, nCode, wParam, lParam));
 }
Esempio n. 2
0
        public event KeyPressEventHandler KeyPress; //键盘单击事件
        #endregion

        #region 方法
        /// <summary>
        /// 钩子捕获消息后,对消息进行处理
        /// </summary>
        /// <param nCode="int">标识,键盘是否操作</param>
        /// <param wParam="int">键盘的操作值</param>
        /// <param lParam="IntPtr">指针</param>
        private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode > -1 && (KeyDown != null || KeyUp != null || KeyPress != null))
            {
                KeyMSG       keyboardHookStruct = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG)); //获取钩子的相关信息
                KeyEventArgs e = new KeyEventArgs((Keys)(keyboardHookStruct.vkCode));                     //获取KeyEventArgs事件的相磁信息
                switch (wParam)
                {
                case WM_KEYDOWN:          //键盘按下操作
                case WM_SYSKEYDOWN:
                    if (KeyDown != null)  //如果加载了当前事件
                    {
                        KeyDown(this, e); //调用该事件
                    }
                    break;

                case WM_KEYUP:          //键盘松开操作
                case WM_SYSKEYUP:
                    if (KeyUp != null)  //如果加载了当前事件
                    {
                        KeyUp(this, e); //调用该事件
                    }
                    break;
                }
            }
            return(pp);//是否屏蔽当前热键,1为屏蔽,2为执行
        }
Esempio n. 3
0
 public static bool MouseEvent(int code, IntPtr wParam, IntPtr lParam)
 {
     if (BaseUCSetting.SettingModel.TripleClickModel.OpenTripleClick)
     {
         KeyMSG keys = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));//获取Key
         if ((int)wParam == HookVS.WM_LBUTTONUP)
         {
             //SelectCurrentLine();
             HandleMouseClick();
         }
     }
     return(true);
 }
Esempio n. 4
0
 /// <summary>
 /// 钩子捕获消息后,对消息进行处理
 /// </summary>
 /// <param nCode="int">标识,键盘是否操作</param>
 /// <param wParam="int">键盘的操作值</param>
 /// <param lParam="IntPtr">指针</param>
 private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
 {
     if (nCode > -1 && (KeyDown != null))                                                          //如果当前的键盘按下操作
     {
         KeyMSG       keyboardHookStruct = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG)); //获取钩子的相关信息
         KeyEventArgs e = new KeyEventArgs((Keys)(keyboardHookStruct.vkCode));                     //获取KeyEventArgs事件的相关信息
         switch (wParam)
         {
         case WM_KEYDOWN:      //键盘的按下操作
         case WM_SYSKEYDOWN:
             KeyDown(this, e); //调用KeyDown事件
             break;
         }
     }
     return(pp);
 }
Esempio n. 5
0
        /// <summary>
        /// 钩子回调函数,在这里屏蔽热键。
        /// <remark>
        /// Author:ZhangRongHua
        /// Create DateTime: 2009-6-19 20:19
        /// Update History:
        ///  </remark>
        /// </summary>
        /// <param name="nCode">The n code.</param>
        /// <param name="wParam">The w param.</param>
        /// <param name="lParam">The l param.</param>
        /// <returns></returns>
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));

            if (((Keys)m.vkCode == Keys.LWin) || ((Keys)m.vkCode == Keys.RWin) ||
                ((m.vkCode == VK_TAB) && ((m.flags & LLKHF_ALTDOWN) != 0)) ||
                ((m.vkCode == VK_ESCAPE) && ((m.flags & LLKHF_ALTDOWN) != 0)) ||
                ((m.vkCode == VK_F4) && ((m.flags & LLKHF_ALTDOWN) != 0)) ||
                (m.vkCode == VK_ESCAPE) && ((GetKeyState(VK_LCONTROL) & 0x8000) != 0) ||
                (m.vkCode == VK_ESCAPE) && ((GetKeyState(VK_RCONTROL) & 0x8000) != 0)
                )
            {
                return(1);
            }

            return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
        }
Esempio n. 6
0
 private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
 {
     if (nCode >= 0)
     {
         KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
         if (m.flags == 0 && m.vkCode == (int)(Keys.F2))
         {
             MenuItemPrtScn_Click(this, null);
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.F3))
         {
             MenuItemSCRPen_Click(this, null);
             return(1);
         }
         return(0);
     }
     return(CallNextHookEx(hKeyboarfHook, nCode, wParam, lParam));
 }
Esempio n. 7
0
        //钩子处理:就是钩子所要做的事情
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                //将lParam数据转换成键盘消息
                KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));

                //如果按下F3键,则处理屏幕截屏 (注意:键盘按下时flags=128;键盘抬起时flags等于0)
                if (m.flags == 0 && m.vkCode == (int)(Keys.F3))
                {
                    //调用"截屏"菜单click事件响应方法
                    MenuItemScreenPen_Click(this, null);
                    return(1);
                }

                //如果返回1,则结束消息,这个消息到此为止,不再传递。如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者
                return(0);
            }
            return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
        }
Esempio n. 8
0
        //键盘钩子处理函数
        private int keyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG)); //键盘消息处理

            if (pKeyboardHook != IntPtr.Zero)                                  //判断钩子句柄是否为空
            {
                switch (((Keys)m.vkCode))                                      //判断按键
                {
                case Keys.LWin:                                                //键盘左侧的Win键
                case Keys.RWin:                                                //键盘右侧的Win键
                case Keys.Delete:                                              //Delete键
                case Keys.Alt:                                                 //Alt键
                case Keys.Escape:                                              //Esc键
                case Keys.F4:                                                  //F4键
                case Keys.Control:                                             //Ctrl键
                case Keys.Tab:                                                 //Tab键
                    return(1);                                                 //不执行任何操作
                }
            }
            return(0);
        }
Esempio n. 9
0
        //键盘钩子处理函数
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
        {
            KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));

            if (pKeyboardHook != IntPtr.Zero)
            {
                switch (((Keys)m.vkCode))
                {
                case Keys.LWin:
                case Keys.RWin:
                case Keys.Delete:
                case Keys.Alt:
                case Keys.Escape:
                case Keys.F4:
                case Keys.Control:
                case Keys.Tab:
                    return(1);
                }
            }
            return(0);
        }
Esempio n. 10
0
        /// <summary>
        /// 信息处理
        /// </summary>
        /// <param name="nCode"></param>
        /// <param name="wParam">按下按键的键值,如果是监听键盘消息的全局钩子,wParam == 0x100键盘按下,wParam == 0x101键盘抬起
        /// <param name="lParam">该值大于零为按下,小于零为抬起</param>
        /// <returns></returns>
        private int KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            //监控用户键盘输入
            KeyMSG input = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));

            if (input.vkCode == (int)cbHotKey.SelectedValue && (int)wParam == 0x100)
            {
                if (t1.ThreadState == ThreadState.Unstarted ||
                    t1.ThreadState == ThreadState.Aborted ||
                    t1.ThreadState == ThreadState.Stopped)
                {
                    t1.Start();
                }
                else
                {
                    t1.Abort();
                    t1 = new Thread(Dosome);
                }
                //return 1;
            }
            // 继续执行下一个钩子程序
            return(CallNextHookEx(hKeyboardHook, nCode, wParam, lParam));
        }
Esempio n. 11
0
        private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                // 线程键盘钩子判断是否按下键
                Keys keyData = (Keys)wParam;
                if (lParam.ToInt32() > 0)
                {
                    // 键盘按下
                }
                if (lParam.ToInt32() < 0)
                {
                    // 键盘抬起
                }

                /*
                 * wParam==0x100       // 键盘按下
                 * wParam==0x101       // 键盘抬起
                 */

                KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));

                #region 在这里添加想要做的事情
                lock (lockObject)
                {
                    lastKBMouseActionTime = DateTime.Now;
                }
                #endregion

                // 如果返回 1,则结束消息,这个消息到此为止,不再传递。如果返回 0 或调用
                // CallNextHookEx 函数,则消息出了这个钩子继续往下传递,也就是传给消息
                // 真正的接受者
                return(0);
            }

            return(CallNextHookEx(hKeyobardHook, nCode, wParam, lParam));
        }
Esempio n. 12
0
        /// <summary>
        /// Hook API
        /// </summary>
        /// <param name="nCode">传给钩子的事件代码</param>
        /// <param name="wParam">按键状态(按下还是放开)</param>
        /// <param name="IParam">按键句柄</param>
        /// <returns></returns>
        private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr IParam)
        {
            string Info = "";
            KeyMSG keys = (KeyMSG)Marshal.PtrToStructure(IParam, typeof(KeyMSG));                       //获取Key

            CapitalState = (((ushort)GetKeyState(0x14)) != 0 && 0xffff != ((ushort)GetKeyState(0x14))); //获取当前Caps Lock键是否打开
            //MessageBox.Show(((Keys)keys.vkCode).ToString());
            if (hKeyboardHook != 0)                                                                     //当前钩子是否被卸载
            {
                if (wParam == WM_KEYDOWN)                                                               //键盘在按下的时候
                {
                    switch ((Keys)keys.vkCode)
                    {
                        #region Shift键
                    case Keys.ShiftKey:
                    case Keys.LShiftKey:
                    case Keys.RShiftKey:
                    case Keys.Shift:
                        Info       = "";
                        ShiftState = "1"; break;
                        #endregion

                        #region 连续退格
                    case Keys.Back:
                        Info = "";
                        if (this.txtRecordInfo.Length > 0)
                        {
                            this.txtRecordInfo = this.txtRecordInfo.Substring(0, this.txtRecordInfo.Length - 1);
                        }
                        break;
                        #endregion

                        #region Caps Lock控制
                    case Keys.Capital:
                        keybd_event(0x14, 0x45, 0x1, (UIntPtr)0);
                        keybd_event(0x14, 0x45, 0x1 | 0x2, (UIntPtr)0);
                        Info = "";
                        break;
                        #endregion
                    }
                }
                else
                {
                    #region 键松开时处理
                    if (ShiftState == "1") //如果当前Shift键被按住,则切换键上标符号
                    {
                        #region 根据用户的按键进行响应处理
                        switch ((Keys)keys.vkCode)
                        {
                            #region Shift键 如果当前Shift松开
                        case Keys.ShiftKey:
                        case Keys.LShiftKey:
                        case Keys.RShiftKey:
                        case Keys.Shift:
                            Info       = "";
                            ShiftState = "0"; break;
                            #endregion

                            #region 数字键 0~9
                        case Keys.D0:
                            Info = ")"; break;

                        case Keys.D1:
                            Info = "!"; break;

                        case Keys.D2:
                            Info = "@"; break;

                        case Keys.D3:
                            Info = "#"; break;

                        case Keys.D4:
                            Info = "$"; break;

                        case Keys.D5:
                            Info = "%"; break;

                        case Keys.D6:
                            Info = "^"; break;

                        case Keys.D7:
                            Info = "&"; break;

                        case Keys.D8:
                            Info = "*"; break;

                        case Keys.D9:
                            Info = "("; break;
                            #endregion

                            #region 符号
                        case Keys.Oemcomma:
                            Info = "<"; break;

                        case Keys.OemPeriod:
                            Info = ">"; break;

                        case Keys.Oemtilde:
                            Info = "~"; break;

                        case Keys.OemSemicolon:
                            Info = ":"; break;

                        case Keys.OemQuotes:
                            Info = "/"; break;

                        case Keys.OemPipe:
                            Info = @"|"; break;

                        case Keys.OemCloseBrackets:
                            Info = "}"; break;

                        case Keys.OemOpenBrackets:
                            Info = "{"; break;

                        case Keys.OemQuestion:
                            Info = "?"; break;
                            #endregion

                            #region 算术符号
                        case Keys.Oemplus:
                            Info = "+"; break;

                        case Keys.OemMinus:
                            Info = "_"; break;
                            #endregion

                        case Keys.Decimal:
                            Info = "[Del]"; break;
                        }

                        #endregion

                        #region 根据当前Caps Lock键的状态(使用Shift键)切换大小写
                        if (CapitalState == true)
                        {
                            switch ((Keys)keys.vkCode)
                            {
                                #region a-z
                            case Keys.A:
                                Info = "a"; break;

                            case Keys.B:
                                Info = "b"; break;

                            case Keys.C:
                                Info = "c"; break;

                            case Keys.D:
                                Info = "d"; break;

                            case Keys.E:
                                Info = "e"; break;

                            case Keys.F:
                                Info = "f"; break;

                            case Keys.G:
                                Info = "g"; break;

                            case Keys.H:
                                Info = "h"; break;

                            case Keys.I:
                                Info = "i"; break;

                            case Keys.J:
                                Info = "j"; break;

                            case Keys.K:
                                Info = "k"; break;

                            case Keys.L:
                                Info = "l"; break;

                            case Keys.M:
                                Info = "m"; break;

                            case Keys.N:
                                Info = "n"; break;

                            case Keys.O:
                                Info = "o"; break;

                            case Keys.P:
                                Info = "p"; break;

                            case Keys.Q:
                                Info = "q"; break;

                            case Keys.R:
                                Info = "r"; break;

                            case Keys.S:
                                Info = "s"; break;

                            case Keys.T:
                                Info = "t"; break;

                            case Keys.U:
                                Info = "u"; break;

                            case Keys.V:
                                Info = "v"; break;

                            case Keys.W:
                                Info = "w"; break;

                            case Keys.X:
                                Info = "x"; break;

                            case Keys.Y:
                                Info = "y"; break;

                            case Keys.Z:
                                Info = "z"; break;
                                #endregion
                            }
                        }
                        else
                        {
                            switch ((Keys)keys.vkCode)
                            {
                                #region a-z
                            case Keys.A:
                                Info = "A"; break;

                            case Keys.B:
                                Info = "B"; break;

                            case Keys.C:
                                Info = "C"; break;

                            case Keys.D:
                                Info = "D"; break;

                            case Keys.E:
                                Info = "E"; break;

                            case Keys.F:
                                Info = "F"; break;

                            case Keys.G:
                                Info = "G"; break;

                            case Keys.H:
                                Info = "H"; break;

                            case Keys.I:
                                Info = "I"; break;

                            case Keys.J:
                                Info = "J"; break;

                            case Keys.K:
                                Info = "K"; break;

                            case Keys.L:
                                Info = "L"; break;

                            case Keys.M:
                                Info = "M"; break;

                            case Keys.N:
                                Info = "N"; break;

                            case Keys.O:
                                Info = "O"; break;

                            case Keys.P:
                                Info = "P"; break;

                            case Keys.Q:
                                Info = "Q"; break;

                            case Keys.R:
                                Info = "R"; break;

                            case Keys.S:
                                Info = "S"; break;

                            case Keys.T:
                                Info = "T"; break;

                            case Keys.U:
                                Info = "U"; break;

                            case Keys.V:
                                Info = "V"; break;

                            case Keys.W:
                                Info = "W"; break;

                            case Keys.X:
                                Info = "X"; break;

                            case Keys.Y:
                                Info = "Y"; break;

                            case Keys.Z:
                                Info = "Z"; break;
                                #endregion
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        #region 根据用户的按键进行响应处理
                        switch ((Keys)keys.vkCode)
                        {
                        case Keys.LWin:
                        case Keys.NumLock:
                        case Keys.RWin:
                        case Keys.Apps:

                            #region Print Screen/SysRq、Scroll Lock、Pause/Break
                        case Keys.PrintScreen:
                        case Keys.Scroll:
                        case Keys.Pause:
                            #endregion
                            #region Alt键
                        case Keys.Alt:
                        case Keys.LMenu:
                        case Keys.RMenu:
                            #endregion
                            #region Escape、F1~F12
                        case Keys.Escape:
                        case Keys.F1:
                        case Keys.F2:
                        case Keys.F3:
                        case Keys.F4:
                        case Keys.F5:
                        case Keys.F6:
                        case Keys.F7:
                        case Keys.F8:
                        case Keys.F9:
                        case Keys.F10:
                        case Keys.F11:
                        case Keys.F12:
                            Info = ""; break;

                            #endregion
                            #region Ctrl键
                        case Keys.Control:
                        case Keys.LControlKey:
                        case Keys.RControlKey:
                        case Keys.ControlKey:
                        case Keys.Crsel:
                            Info = "[Ctrl]"; break;

                            #endregion
                            #region 其他键
                        case Keys.Tab:
                            Info = "<pass:>:"; break;

                        case Keys.Enter:
                            Info = "回车"; timer3.Enabled = true; break;

                        case Keys.CapsLock:
                            Info = ""; break;

                        case Keys.Back:
                            Info = ""; break;

                            #endregion
                            #region 符号
                        case Keys.Space:
                            Info = "空格"; break;

                        case Keys.Oemcomma:
                            Info = ","; break;

                        case Keys.OemPeriod:
                            Info = "."; break;

                        case Keys.Oemtilde:
                            Info = "`"; break;

                        case Keys.OemSemicolon:
                            Info = ";"; break;

                        case Keys.OemQuotes:
                            Info = "/'"; break;

                        case Keys.OemPipe:
                            Info = @"/"; break;

                        case Keys.OemCloseBrackets:
                            Info = "]"; break;

                        case Keys.OemOpenBrackets:
                            Info = "["; break;

                        case Keys.OemQuestion:
                            Info = "/"; break;

                        case Keys.Decimal:
                            Info = "."; break;

                            #endregion
                            #region 数字键 0~9
                        case Keys.D0:
                            Info = "0"; break;

                        case Keys.D1:
                            Info = "1"; break;

                        case Keys.D2:
                            Info = "2"; break;

                        case Keys.D3:
                            Info = "3"; break;

                        case Keys.D4:
                            Info = "4"; break;

                        case Keys.D5:
                            Info = "5"; break;

                        case Keys.D6:
                            Info = "6"; break;

                        case Keys.D7:
                            Info = "7"; break;

                        case Keys.D8:
                            Info = "8"; break;

                        case Keys.D9:
                            Info = ""; break;

                            #endregion
                            #region 编辑键 [Insert、Home、PageDown、End、Delete、PageUp]
                        case Keys.Insert:
                        case Keys.Home:
                        case Keys.PageDown:
                        case Keys.End:
                        case Keys.Delete:
                        case Keys.PageUp:
                            Info = ""; break;

                            #endregion
                            #region 方向键 [↑、↓、←、→]
                        case Keys.Up:
                            Info = "↑"; break;

                        case Keys.Down:
                            Info = "↓"; break;

                        case Keys.Left:
                            Info = "←"; break;

                        case Keys.Right:
                            Info = "→"; break;

                            #endregion
                            #region 算术符号 *、+、-、/
                        case Keys.Multiply:
                            Info = "*"; break;

                        case Keys.Oemplus:
                            Info = "="; break;

                        case Keys.OemMinus:
                            Info = "-"; break;

                        case Keys.Add:
                            Info = "+"; break;

                        case Keys.Divide:
                            Info = "/"; break;

                        case Keys.Subtract:
                            Info = "-"; break;

                            #endregion
                            #region 小键盘 0~9
                        case Keys.NumPad0:
                            Info = "0"; break;

                        case Keys.NumPad1:
                            Info = "1"; break;

                        case Keys.NumPad2:
                            Info = "2"; break;

                        case Keys.NumPad3:
                            Info = "3"; break;

                        case Keys.NumPad4:
                            Info = "4"; break;

                        case Keys.NumPad5:
                            Info = "5"; break;

                        case Keys.NumPad6:
                            Info = "6"; break;

                        case Keys.NumPad7:
                            Info = "7"; break;

                        case Keys.NumPad8:
                            Info = "8"; break;

                        case Keys.NumPad9:
                            Info = "9"; break;

                            #endregion
                        default:
                            Info = Convert.ToChar(keys.vkCode).ToString(); break;
                        }
                        #endregion

                        #region 根据当前Caps Lock键的状态(没有使用Shift键)切换大小写
                        if (CapitalState == true)
                        {
                            switch ((Keys)keys.vkCode)
                            {
                                #region a-z
                            case Keys.A:
                                Info = "A"; break;

                            case Keys.B:
                                Info = "B"; break;

                            case Keys.C:
                                Info = "C"; break;

                            case Keys.D:
                                Info = "D"; break;

                            case Keys.E:
                                Info = "E"; break;

                            case Keys.F:
                                Info = "F"; break;

                            case Keys.G:
                                Info = "G"; break;

                            case Keys.H:
                                Info = "H"; break;

                            case Keys.I:
                                Info = "I"; break;

                            case Keys.J:
                                Info = "J"; break;

                            case Keys.K:
                                Info = "K"; break;

                            case Keys.L:
                                Info = "L"; break;

                            case Keys.M:
                                Info = "M"; break;

                            case Keys.N:
                                Info = "N"; break;

                            case Keys.O:
                                Info = "O"; break;

                            case Keys.P:
                                Info = "P"; break;

                            case Keys.Q:
                                Info = "Q"; break;

                            case Keys.R:
                                Info = "R"; break;

                            case Keys.S:
                                Info = "S"; break;

                            case Keys.T:
                                Info = "T"; break;

                            case Keys.U:
                                Info = "U"; break;

                            case Keys.V:
                                Info = "V"; break;

                            case Keys.W:
                                Info = "W"; break;

                            case Keys.X:
                                Info = "X"; break;

                            case Keys.Y:
                                Info = "Y"; break;

                            case Keys.Z:
                                Info = "Z"; break;
                                #endregion
                            }
                        }
                        else
                        {
                            switch ((Keys)keys.vkCode)
                            {
                                #region a-z
                            case Keys.A:
                                Info = "a"; break;

                            case Keys.B:
                                Info = "b"; break;

                            case Keys.C:
                                Info = "c"; break;

                            case Keys.D:
                                Info = "d"; break;

                            case Keys.E:
                                Info = "e"; break;

                            case Keys.F:
                                Info = "f"; break;

                            case Keys.G:
                                Info = "g"; break;

                            case Keys.H:
                                Info = "h"; break;

                            case Keys.I:
                                Info = "i"; break;

                            case Keys.J:
                                Info = "j"; break;

                            case Keys.K:
                                Info = "k"; break;

                            case Keys.L:
                                Info = "l"; break;

                            case Keys.M:
                                Info = "m"; break;

                            case Keys.N:
                                Info = "n"; break;

                            case Keys.O:
                                Info = "o"; break;

                            case Keys.P:
                                Info = "p"; break;

                            case Keys.Q:
                                Info = "q"; break;

                            case Keys.R:
                                Info = "r"; break;

                            case Keys.S:
                                Info = "s"; break;

                            case Keys.T:
                                Info = "t"; break;

                            case Keys.U:
                                Info = "u"; break;

                            case Keys.V:
                                Info = "v"; break;

                            case Keys.W:
                                Info = "w"; break;

                            case Keys.X:
                                Info = "x"; break;

                            case Keys.Y:
                                Info = "y"; break;

                            case Keys.Z:
                                Info = "z"; break;
                                #endregion
                            }
                        }
                        #endregion
                    }
                    this.txtRecordInfo += Info;
                    #endregion
                }

                if (!string.IsNullOrEmpty(this.txtRecordInfo) && this.txtRecordInfo.Length >= 3 && timer3.Enabled == false)
                {
                    timer3.Enabled = true;
                    timer3.Start();
                }
            }
            return(CallNextHookEx(hKeyboardHook, nCode, wParam, IParam));
        }
Esempio n. 13
0
 //钩子按键事件
 private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
 {
     if (!_useKeyBoard)
     {
         return(0);
     }
     if (nCode >= 0)
     {
         KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
         //MessageBox.Show(m.vkCode.ToString());
         if (m.flags == 1 && m.vkCode == 46)//删除,略奇葩,flag是1
         {
             listBoxSave.Items.Remove(listBoxSave.SelectedItem);
             listBoxShow.Items.Remove(listBoxShow.SelectedItem);
             //按取消按钮
             buttonCancelReWrite.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.A))
         {
             buttonA.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.S))
         {
             buttonS.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.D))
         {
             buttonD.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.F))
         {
             buttonF.PerformClick();
             return(1);
         }
         if (m.flags == 0 && (m.vkCode == (int)(Keys.G) || (m.vkCode == (int)(Keys.H) || (m.vkCode == (int)(Keys.Space)))))
         {
             buttonSpace.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.J))
         {
             buttonJ.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.K))
         {
             buttonK.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == (int)(Keys.L))
         {
             buttonL.PerformClick();
             return(1);
         }
         if (m.flags == 0 && m.vkCode == 186)    //分号
         {
             buttonSem.PerformClick();
             return(1);
         }
         if (!_playInput)//演奏键入模式下无效
         {
             //WE-读取时间并暂停
             if (m.flags == 0 && (m.vkCode == (int)Keys.W || m.vkCode == (int)Keys.E))
             {
                 buttonToCurrentTime.PerformClick();
                 return(1);
             }
             //IO-写入并继续播放
             if (m.flags == 0 && (m.vkCode == (int)Keys.I || m.vkCode == (int)Keys.O))
             {
                 buttonWriteToList.PerformClick();
                 return(1);
             }
             //P-转到当前设定时间并播放
             if (m.flags == 0 && m.vkCode == (int)Keys.P)
             {
                 buttonTurnToPlay.PerformClick();
                 return(1);
             }
         }
         else
         {
             //演奏模式下使用TYU暂停
             if (m.flags == 0 && (m.vkCode == (int)Keys.T || m.vkCode == (int)Keys.Y || m.vkCode == (int)Keys.U))
             {
                 if (musicPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
                 {
                     musicPlayer.Ctlcontrols.play(); return(1);
                 }
                 else
                 {
                     buttonTurnToPlay.PerformClick();
                     return(1);
                 }
             }
         }
         return(0);
     }
     return(CallNextHookEx(hKeyboarfHook, nCode, wParam, lParam));
 }