Comment actualiser les parameters de l’économiseur d’écran de connexion?

J’ai un service Windows qui peut modifier le délai d’attente sur l’économiseur d’écran de connexion Windows (comme décrit ici .) Pour ce faire, je remplace la clé de registre suivante par le délai d’attente en secondes:

HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveTimeOut 

Le problème est que, comment puis-je faire en sorte que le système d’exploitation “lise” ou actualise le délai d’attente de l’économiseur d’écran après une modification de la clé de registre ci-dessus?

Ma pratique montre qu’il est actualisé (à coup sûr) uniquement lorsque je redémarre le système, mais dans mon cas, j’ai besoin de l’appliquer sans le redémarrage.

EDIT_1: Après la suggestion ci-dessous, j’ai essayé, comme il me semble, toutes les combinaisons possibles des drapeaux pour les éléments suivants:

 DWORD bsmInfo1 = BSM_ALLDESKTOPS; DWORD dwFlgs = BSF_FORCEIFHUNG | BSF_IGNORECURRENTTASK | BSF_NOTIMEOUTIFNOTHUNG | BSF_SENDNOTIFYMESSAGE; int nbsm1 = ::BroadcastSystemMessage(dwFlgs, &bsmInfo1, WM_SETTINGCHANGE, 0, (LPARAM)L"Windows"); DWORD bsmInfo2 = BSM_ALLDESKTOPS; int nbsm2 = ::BroadcastSystemMessage(dwFlgs, &bsmInfo2, WM_SETTINGCHANGE, 0, (LPARAM)L"WindowsThemeElement"); 

en vain 🙁 Je reçois 1 à la suite des deux appels mais cela n’a aucun effet.

J’ai pu résoudre ce problème .-.-.

Si votre service s’exécute dans la même session que l’économiseur d’écran de connexion, vous pouvez appeler SystemParametersInfo avec l’indicateur SPI_SETSCREENSAVETIMEOUT .

SystemParametersInfo diffuse le message WM_SETTINGCHANGE dans toutes les fenêtres de niveau supérieur pour indiquer qu’un paramètre a été modifié. Si votre code ne s’exécute pas dans la session correcte, vous pouvez utiliser BroadcastSystemMessage avec l’indicateur BSM_ALLDESKTOPS pour transmettre le message WM_SETTINGCHANGE . Toutefois, cela nécessite le privilège SE_TCB_NAME . Votre code doit donc être exécuté en tant que SYSTEM.

Je n’ai pas vraiment essayé cette session intersessions, donc je ne peux pas garantir que cela fonctionne.