Пример #1
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));
        }
Пример #2
0
        static void StartCursor(object list)
        {
            SetPaint spaint  = list as SetPaint;
            int      sWhith  = spaint.X;
            int      sHeight = spaint.Y;
            int      dx      = 0;
            int      dy      = 0;

            while (IsStartThread)
            {
                if (3 < spaint.rows)
                {
                    spaint.rows = 0;
                }
                switch (spaint.rows)
                {
                case 0:
                    dx = sWhith / 3;
                    dy = sHeight / 3;
                    break;

                case 1:
                    dy = dy * 2;
                    break;

                case 2:
                    dx = dx * 2;
                    break;

                case 3:
                    dy = dy / 2;
                    break;

                default:
                    break;
                }
                spaint.rows++;
                //MessageBox.Show("width:"+sWhith+" height:"+sHeight+ " X:" + dx + " Y:" + dy+" rows:"+spaint.rows);
                SetCursorPos(dx, dy);
                mouse_event(MouseEventFlag.RightDown | MouseEventFlag.RightUp, 0, 0, 0, UIntPtr.Zero);
                Thread.Sleep(10000);
            }
        }