Dynamically changing mouse speed

Guys, I have a C # Winforms application with a panel inside the form. I want that whenever the mouse cursor enters this panel, I want to slow down the mouse speed by 50%. As soon as the pointer moves outside this panel, I want the mouse speed to resume at the usual 100% speed. How to do it in C #?

+6
source share
2 answers

This article may help.

Here is the code from the article:

using System; using System.Runtime.InteropServices; namespace MouseSpeedSwitcher { class Program { public const UInt32 SPI_SETMOUSESPEED = 0x0071; [DllImport("User32.dll")] static extern Boolean SystemParametersInfo( UInt32 uiAction, UInt32 uiParam, UInt32 pvParam, UInt32 fWinIni); static void Main(string[] args) { SystemParametersInfo( SPI_SETMOUSESPEED, 0, uint.Parse(args[0]), 0); } } } 
+4
source
 using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { public const UInt32 SPI_GETMOUSESPEED = 0x0070; const UInt32 SPIF_UPDATEINIFILE = 0x01; const UInt32 SPIF_SENDWININICHANGE = 0x02; [DllImport("User32.dll")] static extern Boolean SystemParametersInfo( UInt32 uiAction, UInt32 uiParam, IntPtr pvParam, UInt32 fWinIni); static unsafe void Main(string[] args) { MouseOptions m = new MouseOptions(); MouseOptions.GetDefaults(); int speed; SystemParametersInfo(SPI_GETMOUSESPEED, 0, new IntPtr(&speed), 0); Console.WriteLine(speed); MouseOptions.SetDefaults(); SystemParametersInfo(SPI_GETMOUSESPEED, 0, new IntPtr(&speed), 0); Console.WriteLine(speed); Console.ReadLine(); } public class MouseOptions { [DllImport("user32.dll")] public static extern int SystemParametersInfo( int uAction, int uParam, IntPtr lpvParam, int fuWinIni ); [DllImport("kernel32.dll")] public static extern int GetLastError(); public const int SPI_GETMOUSESPEED = 112; public const int SPI_SETMOUSESPEED = 113; private static int intDefaulSpeed = 10; private static int intCurrentSpeed; private static int intNewSpeed; public static void GetDefaults() { intCurrentSpeed = GetMouseSpeed(); } public static void SetDefaults() { if ( intCurrentSpeed == 20 ) { SetMouseSpeed(intDefaulSpeed); } else if ( intCurrentSpeed < 10 ) { SetMouseSpeed(intDefaulSpeed); } } public static int GetMouseSpeed() { int intSpeed = 0; IntPtr ptr; ptr = Marshal.AllocCoTaskMem(4); SystemParametersInfo(SPI_GETMOUSESPEED, 0, ptr, 0); intSpeed = Marshal.ReadInt32(ptr); Marshal.FreeCoTaskMem(ptr); return intSpeed; } public static void SetMouseSpeed( int intSpeed ) { IntPtr ptr = new IntPtr(intSpeed); int b = SystemParametersInfo(SPI_SETMOUSESPEED, 0, ptr, 0); if (b == 0) { Console.WriteLine("Not able to set speed"); } else if ( b == 1 ) { Console.WriteLine("Successfully done"); } } } } } 
0
source

Source: https://habr.com/ru/post/1311236/


All Articles