public static void Main(string[] args) { var frequency = TimeSpan.FromSeconds(55); // one move each 55 seconds. var delta = 1; // 1 pixel if (args != null) { if (args.Length >= 1) { if (Int32.TryParse(args[0], out int parameter)) { if (parameter < TimeSpan.FromHours(1).TotalSeconds) { frequency = TimeSpan.FromSeconds(parameter); } else { Console.WriteLine($"The frequency of {parameter} is longer than one hour. Using {frequency.TotalSeconds} seconds instead."); } } else { Console.WriteLine($"The parameter {parameter} is invalid. Using {frequency.TotalSeconds} seconds instead."); } } if (args.Length >= 2) { if (Int32.TryParse(args[1], out int parameter)) { if (parameter > 0 && parameter < 20) { delta = parameter; } else { Console.WriteLine($"The delta of {parameter} is invalid. Using {delta} pixels instead."); } } else { Console.WriteLine($"The parameter {parameter} is invalid. Using {delta} pixels instead."); } } } Console.WriteLine("DizzyMouse"); var pixels = delta == 1 ? "pixel" : "pixels"; Console.WriteLine($"Simulating presence by moving the mouse {delta} {pixels} each {frequency} seconds."); var tokenSource = new CancellationTokenSource(); var task = CreateNeverEndingTask(now => { // https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-input var input = new MOUSE_INPUT() { TYPE = 0, // INPUT_MOUSE // https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-mouseinput dx = delta, dy = delta, mouseData = 0, dwFlags = 1, time = 0, dwExtraInfo = (IntPtr)0 }; var sizeOf = Marshal.SizeOf(typeof(MOUSE_INPUT)); while (true) { input.dx = input.dy = delta; if (SendInput(1, ref input, sizeOf) != 1) { Console.WriteLine("Failed to move the mouse"); } delta *= -1; Thread.Sleep(frequency); } }, tokenSource.Token); task.Post(DateTimeOffset.Now); Console.ReadKey(); using (tokenSource) { tokenSource.Cancel(); } tokenSource = null; task = null; }
private static extern uint SendInput(uint nInputs, ref MOUSE_INPUT pInputs, int cbSize);