SetThreadExecutionState действителен только для потока, который его вызывает.Если он вызывается в рабочем потоке, даже с ES_CONTINUOUS, после того, как рабочий поток мертв, настройка больше не действительна, и затем снова будет включена заставка.
Вызов этого API из таймера вызовет пробуждениерабочий поток до того, как предыдущий поток мертв, и поэтому заставляет его работать.
Так что если вы вызываете SetThreadExecutionState в вашем основном потоке, например, в потоке пользовательского интерфейса в клиентских приложениях, вам не нужен таймер.