Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there any Windows application out there that will determine what process is preventing the screen saver from becoming active?

share|improve this question
Welcome to SuperUser. What version of windows are you using? – Raystafarian Feb 8 '12 at 20:05
The screensaver not activating could be caused by three different issues: (1) a program is specifically preventing the screensaver, (2) the mouse is preventing the screensaver because it is “moving” due to a hair on the optical sensor (or dirty ball) or being perched on the edge of a desk/pad/etc, or (3) a program or mouse is preventing the power-management options from activating, and thus indirectly stopping the screensaver. I don’t know of any programs that can list other software that is blocking screensavers/power-settings on purpose, but the mouse problems are easy to check. – Synetech Feb 8 '12 at 20:14
^ agree, have not seen a program that seeks out which program. Programs or processes, can often be stopped. When having the same problem, I set the screen saver (or other power options) to very very short, then test by starting and stopping things. Also some "devices" in the device manager, have "power management" tabs, those devices will give control of "allows this device to wake the comptuter" so when you run out of program options , you can move on to device options. – Psycogeek Feb 8 '12 at 21:16
2 Group policy, Flash holding it out, and Vmware & Powercfg overrides. – Psycogeek Feb 8 '12 at 21:32
doing a screen saver Preview , or using a program like the many small programs that kick it in directly (screensave) can assist in discovery of what kicks it back off, or keeps it from occuring. that can save time. – Psycogeek Feb 8 '12 at 21:49

powercfg is built into windows and lets you control and view lots of power management settings.

powercfg -energy -trace

This will create a very detailed power management event log, energy-trace.etl. Open it with Event Viewer and filter log by Event Source: Kernel-Power, Include event ID: 62.

This should give you events that look like:

The application or service \Device\HarddiskVolume1\games\Steam\Steam.exe has overridden user power management settings with a code of 0x3.

The code may be different depending whether screensaver, monitor sleep, or another state transition was prevented.

share|improve this answer
I get "The power efficiency diagnostic library (energy.dll) could not be loaded". Why might that be? (the Power service is started) – Sanjay Manohar Apr 17 '13 at 0:54
Incase this is driving anyone else nuts: To open energytrace.etl open Event Viewer | Click Event Viewer (Local) in tree | Action | Open Saved Log | open C:\Windows\System32\energytrace.etl Tell it to convert to the new log format. Works on windows 10. – CandiedOrange Mar 19 at 10:27

Thanks to W1N9Zr0 for pointing me in the right direction!

In my case, it was an XP Pro (SP3) machine so the "energy" switch was not available, However, the "devicequery" switch indicated that it was either the mouse or the keyboard. Once I switched from the PS/2 keyboard I was using to a USB keyboard, the screensaver (and other power options) kicked in per the settings.

NOTE: When screensaver was set to 1 minute, it would sometimes kick in so I knew it was working. Anything above 1 minute and the screensaver would never kick in.

share|improve this answer

Sometimes just changing the time on the screensaver (not the type) to something else, say from 10 min down to 1 and then back to what you had it before will allow the screen saver to function normally.

share|improve this answer

I don't know of any program that does this, but the way to find out is via the GetThreadExecutionState() function which will hold the value ES_DISPLAY_REQUIRED if the thread is currently blocking the screensaver from being activated.

If you apply this function to all of the threads in the system and then call GetProcessIdOfThread on the thread that you find, you'll have found the process that is blocking the screensaver.

share|improve this answer
There is no "GetThreadExecutionState()". – James Apr 17 '12 at 8:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .