You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Windows 11中通过PowerShell脚本无需重启更改鼠标光标?

如何在Windows 11中通过PowerShell脚本无需重启更改鼠标光标?

我完全懂你的困扰——改了注册表光标却没变化,其实是因为光修改注册表项还不够,必须通知Windows系统刷新光标设置才行。下面给你整合好完整的脚本,能跟着你的昼夜主题参数自动切换鼠标光标方案,而且不用重启系统。

核心思路

Windows的光标方案设置存在HKEY_CURRENT_USER\Control Panel\Cursors路径下,我们主要修改两个关键项:

  • Scheme Name: 指定要使用的光标方案名称(比如"Windows 默认"对应浅色,"Windows Black"对应深色)
  • Scheme Source: 设为0,确保系统识别我们指定的方案

修改注册表后,需要调用Windows API SystemParametersInfo发送刷新信号,让系统立刻应用新的光标设置。

完整PowerShell脚本

param (
    [Parameter(Mandatory=$true)][int]$daySegment2,  # 0 = Day, 1 = Night
    [Parameter(Mandatory=$true)][int]$daySegment4,  # -1 = N/A, 0 = Sunrise, 1 = Day, 2 = Sunset, 3 = Night
    [Parameter(Mandatory=$true)][bool]$nightMode,   # True if night mode is enabled
    [Parameter(Mandatory=$false)][string]$imagePath # Path to current wallpaper image
)

# 定义光标方案名称,要和系统里的名称完全匹配
$lightCursorScheme = "Windows 默认"
$darkCursorScheme = "Windows Black"

# 根据主题参数确定要使用的光标方案
$targetScheme = if ($nightMode -or $daySegment2 -eq 1) {
    $darkCursorScheme
} else {
    $lightCursorScheme
}

# 修改注册表中的光标方案设置
Set-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Name" -Value $targetScheme
Set-ItemProperty -Path "HKCU:\Control Panel\Cursors" -Name "Scheme Source" -Value 0

# 调用Windows API刷新光标设置,无需重启系统
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class CursorRefresh {
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, IntPtr pvParam, uint fWinIni);
}
"@

# SPI_SETCURSORS = 0x0057, SPIF_UPDATEINIFILE = 0x01, SPIF_SENDCHANGE = 0x02
[CursorRefresh]::SystemParametersInfo(0x0057, 0, [IntPtr]::Zero, 0x01 -bor 0x02)

Write-Host "已成功切换光标方案为: $targetScheme"

关键说明

  1. 方案名称匹配:要确保$lightCursorScheme$darkCursorScheme的名称和系统里的完全一致——你可以打开「设置>蓝牙和设备>鼠标>额外鼠标设置>指针」面板,查看准确的方案名称,避免拼写错误导致切换失败。
  2. API调用的作用SystemParametersInfo函数会直接通知Windows系统重新加载光标配置,这就是之前只改注册表没生效的核心原因,加上这一步后设置会立刻生效,不用重启或注销。
  3. 参数适配:脚本已经完全结合了你原来的nightModedaySegment2参数逻辑,会自动根据当前主题状态切换对应的光标方案。

备注:内容来源于stack exchange,提问作者fatFeather

火山引擎 最新活动