Modification dynamic de la vitesse de la souris

Les gars, j’ai une application C # Winforms avec un panneau à l’intérieur du formulaire. Ce que je veux faire, c’est que chaque fois que le pointeur de la souris entre dans ce panneau, je souhaite ralentir la vitesse de déplacement de la souris de 50% Une fois que le pointeur se déplace en dehors de ce panneau, je souhaite accélérer la souris pour reprendre une vitesse normale à 100%. Comment puis-je accomplir cela en C #?

Cet article pourrait aider

Voici le code de l’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(ssortingng[] args) { SystemParametersInfo( SPI_SETMOUSESPEED, 0, uint.Parse(args[0]), 0); } } } 
 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(ssortingng[] 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"); } } } } }