Is there any Windows application out there that will determine what process is preventing the screen saver from becoming active?
powercfg is built into windows and lets you control and view lots of power management settings.
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 code may be different depending whether screensaver, monitor sleep, or another state transition was prevented.
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.