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)); }
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); } }