Windows 如何在批处理脚本中更改鼠标设置?

Windows 如何在批处理脚本中更改鼠标设置?,windows,batch-file,cmd,registry,Windows,Batch File,Cmd,Registry,我正在尝试创建一个脚本,用于更改注册表中的鼠标设置。当我运行脚本时,我看到已经进行了更改,但是除非我注销并重新登录,否则这些更改不会生效,这是不可行的 :: MouseSensitivity 10 :: MouseSpeed (Set Pointer Precision) 0 :: MouseThreshold1 0 :: MouseThreshold2 0 @ECH

我正在尝试创建一个脚本,用于更改注册表中的鼠标设置。当我运行脚本时,我看到已经进行了更改,但是除非我注销并重新登录,否则这些更改不会生效,这是不可行的

:: MouseSensitivity                     10
:: MouseSpeed (Set Pointer Precision)   0
:: MouseThreshold1                      0
:: MouseThreshold2                      0

@ECHO OFF

REG ADD "HKEY_CURRENT_USER\Control Panel\Mouse" /v MouseSensitivity /t REG_SZ /d 10 /f
REG ADD "HKEY_CURRENT_USER\Control Panel\Mouse" /v MouseSpeed /t REG_SZ /d 0 /f
REG ADD "HKEY_CURRENT_USER\Control Panel\Mouse" /v MouseThreshold1 /t REG_SZ /d 0 /f
REG ADD "HKEY_CURRENT_USER\Control Panel\Mouse" /v MouseThreshold2 /t REG_SZ /d 0 /f

ECHO Execution logged on: %DATE% at %TIME% >> test.txt

:: /* Tried this, doesn't work.
:: RUNDLL32.EXE USER32.DLL, UpdatePerUserSystemParameters
:: */

@EXIT /B 0

陈雷蒙,你说得对。 这是我用C++提出的解决方案。
#include <windows.h>

int main()
{
    int mouse_info[3];

    mouse_info[0] = 0;  // MouseThreshold1
    mouse_info[1] = 0;  // MouseThreshold2
    mouse_info[2] = 0;  // Set Pointer Precision

    // Set and update user settings. In effect immediately.
    SystemParametersInfo(SPI_SETMOUSE,
                         0,
                         mouse_info,
                         SPIF_UPDATEINIFILE);

    return 0;
}
#包括
int main()
{
int mouse_info[3];
鼠标信息[0]=0;//MouseThreshold1
鼠标信息[1]=0;//MouseThreshold2
鼠标信息[2]=0;//设置指针精度
//设置并更新用户设置。立即生效。
系统参数信息(SPI_设置鼠标,
0,
鼠标信息,
SPIF_更新文件);
返回0;
}

更改注册表值不会应用更改

Windows系统在启动时读取并加载它们,而在更改值时不会发生这种情况。要做到这一点,您需要调用系统API

我也使用了PowerShell脚本。您可以在以下位置找到代码:

在那里我放置了两个批处理文件。一个用于触摸板,一个用于USB鼠标,因为它们都以不同的速度运行。你一定会有你的版本根据需要


PS:不要问有关PowerShell执行策略等的问题。如果遇到这些问题,请用谷歌搜索。

注册表不是API。您需要从可以调用Win32 API的语言调用SystemParametersInfo。