Question: Does anyone know if there is an API to get the current monitor state (on or off) in Windows (XP/Vista/2000/2003)?

All of my searches seem to indicate there is no real way of doing this. 

[This thread](http://www.promixis.com/forums/archive/index.php/t-1282.html) tries to use [GetDevicePowerState](http://msdn.microsoft.com/en-us/library/aa372690(VS.85).aspx) which according to Microsoft's docs does not work for display devices. 

In Vista I can listen to [GUID\_MONITOR\_POWER\_ON](http://msdn.microsoft.com/en-us/library/aa373195(VS.85).aspx) but I do not seem to get events when the monitor is turned off manually. 

In XP I can hook into `WM_SYSCOMMAND` `SC_MONITORPOWER`, looking for status 2. This only works for situations where the system triggers the power off. 

The WMI `Win32_DesktopMonitor` class does not seem to help out as well. 

**Edit**: Here is [a discussion](http://groups.google.com/group/comp.os.ms-windows.programmer.win32/browse_thread/thread/6d3e0a0828e68b89/d095095f5244bab4?lnk=gst&q=GetDevicePowerState++monitor#d095095f5244bab4) on comp.os.ms-windows.programmer.win32 indicating there is no reliable way of doing this. 

Anyone else have any other ideas?

Answer: 
[GetDevicePowerState](https://msdn.microsoft.com/en-us/library/windows/desktop/aa372690%28v=vs.85%29.aspx) *sometimes* works for monitors. If it's present, you can open the `\\.\LCD` device. Close it immediately after you've finished with it.

Essentially, you're out of luck—there is no reliable way to detect the monitor power state, short of writing a device driver and filtering all of the power IRPs up and down the display driver chain. And that's not very reliable either.
Before doing anything based on the monitor state, just remember that users can use a machine with remote desktop of other systems that don't require a monitor connected to the machine - so don't turn off any visualization based on the monitor state.