1 votes

Exécuter un fichier batch lorsque Windows active/désactive la "Lumière de nuit".

Je suis assez nouveau ici. comme le titre l'indique, j'essaie de synchroniser un programme pour qu'il s'exécute et se ferme avec le coucher du soleil. j'ai juste besoin d'un peu d'aide pour trouver comment. je me demande si je peux utiliser le paramètre de veilleuse de Windows pour lancer le lot chaque fois qu'il s'allume ou s'éteint.

1voto

Codebreaker007 Points 558

Vous devrez exécuter cette tâche planifiée en tant qu'utilisateur actuellement connecté, mais vous pouvez y parvenir en surveillant le registre.

La clé que vous surveillez pour voir quel est le statut :

HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.bluelightreductionstate

La lecture du registre s'effectue via la fonction REG QUERY commande. Cette commande peut être utilisée pour récupérer les valeurs de n'importe quelle clé dans le registre. Syntaxe :

REG QUERY [ROOT\]RegKey /v ValueName [/s] 
REG QUERY [ROOT\]RegKey /ve --This returns the (default) value

Où RegKey est la clé qui doit être recherchée dans le registre.
Détails sur REG QUERY
En fonction du résultat, vous lancez ou arrêtez une tâche/un programme ou ce que vous voulez faire.
Quelques exemples de code pour vous aider à démarrer :

@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

Veuillez vérifier ces valeurs dans votre registre car je travaille pour l'instant sur un MAC :

set Type=REG_SZ
set Value=1

Le lot doit être exécuté comme une tâche récurrente dans le planificateur (5-10 minutes) pour vérifier le changement. Si vous maîtrisez le langage C++, vous pouvez écrire un moniteur pour vérifier l'événement, mais c'est une autre histoire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X