【问题标题】:How do I change mouse settings in my batch script?如何在批处理脚本中更改鼠标设置?
【发布时间】:2017-07-08 11:24:45
【问题描述】:

我正在尝试制作一个脚本来更改我在注册表中的鼠标设置。当我运行脚本时,我看到更改已完成,但除非我注销并重新登录,否则它们不会生效,这是不可行的。

:: 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

【问题讨论】:

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

标签: windows batch-file cmd registry


【解决方案1】:

Raymond Chen,你是对的。 这是我使用 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;
}

【讨论】:

    【解决方案2】:

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

    Windows 系统在启动时读取并加载它们,这不会在更改值时发生。您需要调用系统 API 来执行此操作。

    我也使用了 PowerShell 脚本。您可以在

    找到代码

    https://github.com/raevilman/windows-scripts/tree/master/mouse/speed

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

    PS:不要问PowerShell执行策略之类的,遇到了就google吧。

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2023-03-06
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多