2009-10-17 5 views
0

Je tente de maintenir le système allumé tout en permettant à l'affichage de s'éteindre, pour permettre à un téléchargement de se terminer lorsque le système est sans surveillance. Pour ce faire, j'appelle:Pourquoi SetThreadExecutionState (ES_SYSTEM_REQUIRED) empêche-t-il la mise hors tension de l'affichage?

SetThreadExecutionState(ES_SYSTEM_REQUIRED); 

chaque fois que j'obtiens des données du téléchargement. Cependant, cela semble également empêcher la mise hors tension de l'écran (l'affichage diminue selon la minuterie de gradation configurée, mais ne s'éteint jamais complètement). Selon the MSDN entry, cela ne devrait arriver que si je passe également ES_DISPLAY_REQUIRED - pourquoi est-il bloqué de toute façon?

Notez que lorsque j'arrête d'appeler SetThreadExecutionState, l'affichage ne redémarre pas; Je dois terminer le programme pour permettre à l'affichage de s'éteindre. Cependant, ne devrait-il pas avoir des effets persistants s'il est appelé avec ES_CONTINUOUS? J'utilise Windows 7, si cela est important. Je suis incapable de tester sur d'autres versions en ce moment ...

Répondre

0

jamais l'esprit - il semble the bug était pas dans mon code :)

1

si vous appelez cette fonction sans ES_CONTINUOUS, il ne sera pas continuer à compter le temporisateur de ralenti pour le système et le moniteur. donc vous devez passer les paramètres avec combinaison par ES_CONTINUOUS. Par exemple, vous pouvez appeler SetThreadExecutionState (ES_SYSTEM_REQUIRED | ES_CONTINUOUS); au lieu de SetThreadExecutionState (ES_SYSTEM_REQUIRED);

+0

Salut, ce n'était pas mon problème original - mais la prémisse de la question est erronée, donc je vais demander aux mods de supprimer la question. – bdonlan

Questions connexes