Csharp/C#教程:动态改变鼠标速度分享


动态改变鼠标速度

大家好,我有一个C#Winforms应用程序,表单中有一个面板。 我想要做的是,每当鼠标指针进入该面板时,我想要将鼠标的移动速度减慢50%。 一旦指针移动到这个面板之外,我想加速鼠标恢复正常的100%速度。 我怎样才能在C#中实现这一目标?

这篇文章可能有帮助

这是文章中的代码:

上述就是C#学习教程:动态改变鼠标速度分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1035069.html

(0)
上一篇 2022年1月19日
下一篇 2022年1月19日

精彩推荐