gpt4 book ai didi

c# - 切换提高指针精度

转载 作者:行者123 更新时间:2023-11-30 17:47:28 25 4
gpt4 key购买 nike

我们基本上是在创建一个控制面板小程序。我们需要在鼠标属性中切换“增强指针精度”。
为此,我们需要使用 SPI_GETMOUSE 调用 SystemParametersInfo。它有一个包含 3 个元素的数组作为它的第三个参数。我是 PInvoke 的新手,我尝试了很多签名,但到目前为止还没有成功。这是我尝试过的签名:

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, [MarshalAs(UnmanagedType.LPArray)] ref long[] vparam, SPIF fWinIni);

static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref long[] vparam, SPIF fWinIni);

以上都不适合我,这是我得到的异常(exception):
System.AccessViolationException:试图读取或写入 protected 内存。这通常表示其他内存已损坏。
在搜索时我想出了 this这是在VB中。

解决方案:感谢GWLlosa's answerthis one我想出了解决方案:

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo", SetLastError = true)]
public static extern bool SystemParametersInfoGet(uint action, uint param, IntPtr vparam, SPIF fWinIni);
public const UInt32 SPI_GETMOUSE = 0x0003;
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo", SetLastError = true)]
public static extern bool SystemParametersInfoSet(uint action, uint param, IntPtr vparam, SPIF fWinIni);
public const UInt32 SPI_SETMOUSE = 0x0004;
public static bool ToggleEnhancePointerPrecision(bool b)
{
int[] mouseParams = new int[3];
// Get the current values.
SystemParametersInfoGet(SPI_GETMOUSE, 0, GCHandle.Alloc(mouseParams, GCHandleType.Pinned).AddrOfPinnedObject(), 0);
// Modify the acceleration value as directed.
mouseParams[2] = b ? 1 : 0;
// Update the system setting.
return SystemParametersInfoSet(SPI_SETMOUSE, 0, GCHandle.Alloc(mouseParams, GCHandleType.Pinned).AddrOfPinnedObject(), SPIF.SPIF_SENDCHANGE);
}

还有 this documentation事实证明是有帮助的。

最佳答案

你试过吗:

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(SPI uiAction, uint uiParam, IntPtr pvParam, SPIF fWinIni);

无耻地摘自:

http://www.pinvoke.net/default.aspx/user32/SystemParametersInfo.html

关于c# - 切换提高指针精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com