这里很新。正如标题所说,我试图同步一个程序以运行并在日落时关闭。只需要一点帮助来弄清楚如何。我想知道我是否可以使用 Windows 夜灯设置在打开或关闭时启动批处理。
答案1
您必须以当前登录用户的身份将其作为计划任务运行,但您可以通过监控注册表来实现这一点。
你监视的关键是看状态是什么:
HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.bluelightreductionstate
通过命令读取注册表REG QUERY
。此命令可用于检索注册表中任何键的值。语法:
REG QUERY [ROOT\]RegKey /v ValueName [/s]
REG QUERY [ROOT\]RegKey /ve --This returns the (default) value
其中RegKey是需要在注册表中搜索的键。
详情REG QUERY
根据结果,您可以启动或停止任务/程序或任何您想做的事情。以下
是一些示例代码,可帮助您入门:
@echo off
setlocal
set Key=HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.bluelightreductionstate
set Type=REG_SZ
set Value=1
set Data=
for /f "tokens=2,3" %%a in ('reg query %Key% /v %Value% 2^>NUL ^| find /i "%Value%"') do (
set TestType=%%a
set Data=%%b
)
if /i not "%TestType%"=="%Type%" goto :Data_Missing
if /i "%Data%"=="0" goto Data_0
if /i "%Data%"=="1" goto Data_1
if /i "%Value%"=="1" goto Execute_P
goto Data_Undefined
:Execute_P
echo Value is "%Value%". - Executing program
Start "" "C:\Program Files\MY_FOLDER\my_program.exe"
REM notice the double quote after start IF the path contains spaces
goto end
:Data_0
echo Data is "%Data%".
goto end
:Data_1
echo Data is "%Data%".
goto end
:Data_Missing
echo Key or value not found.
goto end
:Data_Undefined
echo No action for data "%Data%" defined.
:end
由于我目前正在使用 MAC,请检查您的注册表中的这些值:
set Type=REG_SZ
set Value=1
批处理必须作为调度程序中的重复任务运行(5-10 分钟)以检查更改。如果您精通 C++,您可以编写一个监视器来检查事件,但那是另一回事。