当前位置: 首页 > 编程语言 > C#

切换增强指针精度共享

时间:2023-04-11 11:59:11 C#

切换增强指针精度我们基本上是在创建一个控制面板小程序。我们需要在鼠标属性中切换“增强指针精度”。为此,我们需要使用SPI_GETMOUSE调用SystemParametersInfo。它有一个包含3个元素的数组作为它的第三个参数。我是PInvoke的新手,我尝试了很多签名,但到目前为止还没有成功。这是我尝试签名的内容:[DllImport("user32.dll",SetLastError=true)][return:MarshalAs(UnmanagedType.Bool)]staticexternboolSystemParametersInfo(uintuiAction,uintuiParam,[MarshalAs(UnmanagedType.LPArray)]reflong[]vparam,SPIFfWinIni);staticexternboolSystemParametersInfo(uintuiAction,uintuiParam,reflong[]vparam,SPIFfWinIni);以上都不适合我,这是我得到的异常:System.AccessViolationException:尝试读取或写入受保护的内存。这通常表示其他内存已损坏。在搜索时我在VB中想到了这个。解决方案:感谢GWLlosa的回答,我想出了解决方案:[DllImport("user32.dll",EntryPoint="SystemParametersInfo",SetLastError=true)]publicstaticexternboolSystemParametersInfoGet(uintaction,uintparam,IntPtrvparam,SPIFfWinIni);公共常量UInt32SPI_GETMOUSE=0x0003;[DllImport("user32.dll",EntryPoint="SystemParametersInfo",SetLastError=true)]publicstaticexternboolSystemParametersInfoSet(uintaction,uintparam,IntPtrvparam,SPIFfWinIni);publicconstUInt32SPI_SETMOUSE=0x0004;publicstaticboolToggleEnhancePointerPrecision(boolb){int[]mouseParams=newint[3];//获取当前值。SystemParametersInfoGet(SPI_GETMOUSE,0,GCHandle.Alloc(mouseParams,GCHandleType.Pinned).AddrOfPinnedObject(),0);//按照指示修改加速度值。鼠标参数[2]=b?1:0;//更新系统设置。返回SystemParametersInfoSet(SPI_SETMOUSE,0,GCHandle.Alloc(mouseParams,GCHandleType.Pinned).AddrOfPinnedObject(),SPIF.SPIF_SENDCHANGE);这个文档也被证明是有用的你试过了吗:[DllImport("user32.dll",SetLastError=true)][return:MarshalAs(UnmanagedType.Bool)]staticexternboolSystemParametersInfo(SPIuiAction,uintuiParam,IntPtrpvParam,SPIFfWinIni);无耻下架:http://www.pinvoke.net/default.aspx/user32/SystemParametersInfo.html以上就是C#学习教程的全部内容:切换增强型指针精度分享,如果对大家有用,还需要了解更多关于C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢