当 Windows 激活/停用“夜灯”时运行批处理文件

当 Windows 激活/停用“夜灯”时运行批处理文件

这里很新。正如标题所说,我试图同步一个程序以运行并在日落时关闭。只需要一点帮助来弄清楚如何。我想知道我是否可以使用 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++,您可以编写一个监视器来检查事件,但那是另一回事。

相关内容