问题背景:
我将背景设置为每 10 分钟更换一次的幻灯片。它还会自动从背景中选择强调色,并在开始菜单、任务栏和操作中心显示强调色。这些设置减慢了我的计算机速度。每 10 分钟更改一次背景没有太大问题,但将选定的颜色适应开始菜单、任务栏和操作中心似乎会重新启动任务栏,这会立即减慢计算机速度。在正常使用过程中,这种减速时间较短且不会影响任何内容,但当我在玩游戏时,这种减速会毁了我的游戏。所以,我需要在进入游戏之前更改这些设置。最快的方法是按以下顺序执行:首先,我需要取消选中Automatically pick an accent color from background
,这样我的任务栏就不会自行重启。其次,我将从切换为Background
。(如果我首先将背景切换为单张图片,即使是相同的背景和相同的强调色,任务栏仍会自动重启)。当然,当我退出游戏时,我会手动再次恢复这些更改。single picture
slideshow
我如何使用一个(或两个,一个用于进行“游戏模式”更改,一个用于撤消它们).bat
文件来做到这一点?
我的设置的截图:
我尝试过的:
我Automatically pick an accent color from background
在中找到了设置HKEY_CURRENT_USER\Control Panel\Desktop
。有一个REG_DWORD
名为so,此批处理脚本会自动在(关闭)和(打开)AutoColorization
之间切换值0
1
@echo off
setlocal enabledelayedexpansion
set KEY=HKEY_CURRENT_USER\Control Panel\Desktop
set VALUE=AutoColorization
REM Check current value of the registry key
for /f "tokens=3" %%i in ('reg query "%KEY%" /v "%VALUE%" ^| findstr "%VALUE%"') do (
set /a CURRENT_VALUE=%%i
)
REM Toggle the value of the registry key
if !CURRENT_VALUE! equ 1 (
set /a NEW_VALUE=0
) else (
set /a NEW_VALUE=1
)
REM Update the registry key with the new value
reg add "%KEY%" /v "%VALUE%" /t REG_DWORD /d %NEW_VALUE% /f
REM Display the new value
echo %VALUE% set to %NEW_VALUE%
但是,当我以这种方式将注册表项更改为 1 时,我的任务栏颜色不会立即更新,我必须等待它更改为幻灯片中的下一张照片。但是当我在设置中将其打开时,颜色更新会立即应用。这就是我上面提到的“某种重启”的意思。我不想explorer.exe
完全关闭并重新启动,因为它会关闭文件资源管理器窗口等,并且还会增加负担。所以,我需要找到此设置如何刷新任务栏并找到以相同方式刷新的代码。
我还发现Background
switch 中HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers
有一个REG_DWORD
叫做BackgroundType
。0
是Picture
,1
是Solid Color
,和2
是Slideshow
。
但是,当我从注册表中更改值时,没有任何效果。Background
保持不变。只要我在设置中打开“背景”选项卡,注册表项就会返回到旧值。我可能需要更改其他一些条目,但我找不到它们是什么。
概括:
1-) 当我更改注册表中的强调色设置时,我需要找到一种方法将其直接应用于开始、任务栏和操作中心(无需 taskkill)
2-) 我需要找出需要进行哪些注册表编辑才能更改图片和幻灯片之间的背景设置。
3-) 我需要将这些设置合并到批处理文件中,以便按顺序应用和更改它们。
答案1
作为@DrMoishePippik提到,为了停止减速,我只需在原始值(注册表上的 10 分钟或 600000 毫秒)和 1 天(或注册表上的 86400000 毫秒)之间切换幻灯片放映间隔。
我正在使用这个脚本。
@echo off
setlocal
REM Check current value of Interval
for /f "tokens=2*" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\Personalization\Desktop Slideshow" /v "Interval" ^| find "Interval"') do set current_value=%%b
if %current_value% equ 86400000 (
echo Interval is currently set to 86400000
set new_value=600000
set new_value_text=10 MINUTES
) else (
echo Interval is currently set 600000
set new_value=86400000
set new_value_text=1 DAY
)
REM Update Interval value
reg add "HKEY_CURRENT_USER\Control Panel\Personalization\Desktop Slideshow" /v "Interval" /t REG_DWORD /d %new_value% /f
echo Interval value updated to %new_value% = %new_value_text%
REM Keep the window for 2 seconds
timeout 2