Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have a 16 monitor wide display wall. They are all 42 inch LCD televisions. They are all run from the same computer. They all run powerpoint and have the exact same outline/design, but with the information on the powerpoint varying from each one. I want to have a screensaver turn on after no user input is detected after a specified time. I have a program that I programmed to turn on a custom screensaver run for a specific time and then shutdown.

The issue I am having is either creating a program that can detect when no user input is present or to run it from the task scheduler. Microsoft makes it impossible for the computer to be either idle or to turn on the screensaver because of ES_DISPLAY_REQUIRED.

Is there way to disable the the ES_DISPLAY_REQUIRED function from the registry for the entire computer. Or perhaps a way to read the screensaver timeout function and have that call in the program I made to run.Aka despite the ES_DISPLAY_REQUIRED preventing the screensaver from starting, the countdown to the screensaver still runs and my program runs when it counts down to zero.

The reason I want to do this is that even though they are all LCD televisions I want to prevent burn-in on the monitors, They all shut down at night, and only run for 12 hours a day, but I rather be cautious than risk damage a very expensive set of televisions. Is their any third party software that does this? Specifically for a multimonitor application.

Also as a side note, I am running 3 AMD FirePro W600 graphics cards, and have Display Fusion software for additional support features.

share|improve this question
add comment

1 Answer

not a full answer, but you can programmatically control the ES_DISPLAY_REQUIRED execution state with SetThreadExecutionState().

More info from MS: SetThreadExecutionState function

Example:

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);

Related info on StackOverflow: http://stackoverflow.com/questions/4964302/programmatically-reset-windows-xp-idle-time

share|improve this answer
    
I looked at the various examples involving this and I don't believe this will work. The program will effectively have to disable or suppress functions from powerpoint. I don't even want to think of the possible errors that might occur, as well as the fact that running Powerpoint on all 16 monitors has shown to be somewhat difficult with the program lagging at times, and even shutting down unexpectedly. I just want to read the count down for the screensaver or the inactivity timer, but not use Microsoft's built in idle task scheduler function. –  Greg M May 16 '13 at 16:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.