8

Standby not Disabled!
When running 2 monitors on windows 7 or Windows XP, I would like to be able to put one of the monitors at a time into standby. The method can be manual.

When running 2 monitors , the second monitor is not always needed, shutting off the monitors own power switch will turn off the monitor, that does work Ok. Problems with that are , the delay with the monitor logo at turn on, and the power switch is not very accessable, and the switch might not live forever turning it on and off so many times.

Using disable methods like devcon, WIN-P and Display, causes all the windows to properly move to the other monitor. While that is what a person would want to happen so they can get hold of the windows, that is not what I want to happen, and some things on the other monitor have to be re-arranged after a re-enable. By putting it into standby mode, nothing changes other than the monitor going into standby.

Disconnecting the DVI cable still can cause the system to (properly) shift all the windows over to the one monitor, just like any of the disable methods do. That makes a mess of the windows, and is so unacceptable, that I would prefer to leave the monitor on, wasting power and the hardware, when it could easily go into standby for some time.

For both monitors I am using a "MonitorOff" program that puts both monitors into standby, but I can not find a utility that will put only ONE monitor into standby for the windows system.

If someone comes along and suggests "ultramon" you must know for a fact that it will put One of either of the monitors into actual standby. And it does not really suit me to use ultramon, I tested it (it was nice) and I did not feel that it was a program I wanted.

The 2 monitors are running off of an ATI 4890 card, they are both hooked up DVI-I, the OS is both Windows 7 (primary) and Windows XP.

In addition it would also be interesting to have seperate standby activity timers, and follow mouse kind of standby changes, but any manuel method , shortcut, batch , tray, or gadget kind of operation would be a good start.

14
  • 1
    What is the purpose of putting one monitor into standby? Because if you're trying to save power, then it's worth just turning it off since standby can still waste a lot of power. Unless you're flipping it on/off every hour, it shouldn't affect the switch's lifespan much. Tactile switches are usually rated for between 10k to 2M mechanical cycles and 100k to 5M electrical cycles. So even switching them on/off a dozen times a day, it's still likely to outlive the actual panel, power supply or other components. Mar 30, 2012 at 10:35
  • 1
    The tiny tactile switches behind the plastic junk, are rated at 1mill, but the plastic that hold the buttons together is not, and those tiny switches have been known to fail from high use. Also it was indicated that the switch is not easily accessable (as a desktop item) ,also it was indicated that the monitor has a logo routine. Add to that, there is not a way to batch a hardware switch :-)
    – Psycogeek
    Mar 30, 2012 at 10:47
  • The standby power on ths monitor is 2-4 watts , the running power is 22-27watts. the other monitor uses 7watts in standby and 50watts when running.
    – Psycogeek
    Mar 30, 2012 at 11:01
  • 1
    If ultramon works, use ultramon, sounds silly not to use something you know works.
    – Ramhound
    Mar 30, 2012 at 12:20
  • 2
    @Psycogeek: Yea, I mean, logically, there's no reason why it couldn't be done. At the very least, the second video signal could simply be re-routed to a virtual/non-existent monitor instead of your LCD monitor. And the virtualized display could trick Windows into thinking there's still a 2nd display to prevent Windows from returning to a single-display desktop. Mar 30, 2012 at 14:03

3 Answers 3

1

This probably isn't what you want, but a potential hackish solution is to hook your monitor up via a KVM switch and simply switch the video input to an inactive input. KVM switches tend to be designed for higher cycles than power switches, and if needed, you could always replace the switch assembly with one you know is rated for millions of cycles.

To the computer/Windows, it will be as if the monitor were turned off or unplugged. With no signal being received, the monitor should put itself in sleep mode.

Otherwise,find or write an ACPI tool that lets you manually send ACPI signals to devices. This might be a potential starting point.

3
  • It was explained that removing the cable cause the system to properly move all the windows to the one monitor, same as disabled, and same undesired occurances. With no signal being recieved the monitor does go on standby. But the system still did what it is supposed to do when the monitor is not there. Is there a KVM that does not do that, and how much would it cost if it was faking that it was a monitor there still?
    – Psycogeek
    Mar 30, 2012 at 15:17
  • 1
    @Psycogeek: Ah, sorry, I missed that part. I'm not sure if there are any that actually do fake a monitor being there, but I do know that some KVMs generate their own DDC/EDID info, which might suggest they're capable of faking a monitor signal. Mar 30, 2012 at 15:26
  • They very well could exist, for some of the same reasonings, probably in the $79 doller ones, with an octopuss of wires hanging out. more wires alone would not fit in well here, because of all the connections, and peripherals that connect to the computer, and other electronics stuff. I even use a slower VNC as a KVM for the rarer times when i control the other computer.
    – Psycogeek
    Mar 30, 2012 at 15:34
1

I found a couple of answers to this Question (Turn off display in Windows on command) to be close to what I was thinking of.

The only issue with these is they don't describe how to automate this process, it gives you the ability to sleep a single monitor upon running a script as well as how to turn it back on, but it doesn't tell you how to make all of this happen on the events that you describe.

This site (Turn off LCD) talks about creating a program that makes use of System.Runtime.InteropServices I imagine that you could create a windows service that will sleep one of the monitors upon inactivity and then awaken it when there are mouse events.

If I were tasked with this I think that I could make it happen.

Challenge accepted

4
  • not the highest voted answer but the other two
    – Malachi
    Apr 22, 2014 at 15:30
  • "it gives you the ability to sleep a single monitor upon running a script as well as how to turn it back on" None of the methods at that link or any of these programs will selectivly standby just One of the monitors?
    – Psycogeek
    Apr 23, 2014 at 10:21
  • 1
    @Psycogeek, this answer sounds more like it would do what we are looking for, superuser.com/a/485930/162960
    – Malachi
    Apr 23, 2014 at 13:16
  • 1
    Oh that one, that one is beyond me , programming.
    – Psycogeek
    Apr 24, 2014 at 0:20
0

I also needed such a functionality for laptop battery conservation purposes. However, turns out this is a surprisingly difficult thing to achieve through conventional means. So, I resorted to autohotkey, which is capable of basically anything, it turns out.

The thread on autohotkey forums

The script that worked for me:

Process, Priority,, B
Gui,2:-Caption +ToolWindow +AlwaysOnTop
Gui,2:Color, 0

SetTimer, Check, 250 ; checks idle status every 250 ms (modify this)

Check:
last := idle, idle := A_TimeIdlePhysical > 2000 ; 2000 ms idle time engages idle mode (selected so short for testing purposes)
If (idle = last)
 Return
If idle {
 AdjustScreenBrightness(-100) ; minumum brightness value for laptops (might change based on manufacturer and model etc)
 Gui,2:Show, Maximize ; blacks overlay over screen
} Else {
 AdjustScreenBrightness(70)
 Gui,2:Hide ; removes black overlay
}
Return

AdjustScreenBrightness(step) {
    service := "winmgmts:{impersonationLevel=impersonate}!\\.\root\WMI"
    monitors := ComObjGet(service).ExecQuery("SELECT * FROM WmiMonitorBrightness WHERE Active=TRUE")
    monMethods := ComObjGet(service).ExecQuery("SELECT * FROM wmiMonitorBrightNessMethods WHERE Active=TRUE")
    minBrightness := 0  ; level below this is identical to this

    for i in monitors {
        curt := i.CurrentBrightness
        break
    }
    if (curt < minBrightness)  ; parenthesis is necessary here
        curt := minBrightness
    toSet := curt + step
    if (toSet > 100)
        return
    if (toSet < minBrightness)
        toSet := minBrightness
        
    

    for i in monMethods {
        i.WmiSetBrightness(1, toSet)
        break
    }
}

The brightness function shown here only works for laptops, but it is possible to modify the display brightness of a desktop screen as well.

This is not an exact solution to the problem, however, I believe it gives a very strong starting point. I am posting it here because on different platforms I have seen people complaining that their laptop's display standby mode does not work as desired. This is works satisfactorily in my opinion.

You must log in to answer this question.

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