Eh, I tried to fiddle with OnMessage(0x218, "WM_POWERBROADCAST") to see wether a system is idle due to hibernation or standby mode.
MSDN says:
WM_POWERBROADCAST messages do not distinguish between sleeping states and hibernation. An application can determine only that the system has entered a sleeping state; it cannot determine the specific power state that the system entered when the transition occurred. Its a pity that
A_TimeIdlePhysical does not detect these modes: it keeps on counting even when standby or hibernated..
When using function WM_POWERBROADCAST(wparam,lparam) the wparam and lparam give the following values:
Suspend cycle :
Powerbroadcast 10 - 0
Powerbroadcast 10 - 0
Powerbroadcast 0 - 1
Powerbroadcast 0 - 1
Powerbroadcast 4 - 0
Powerbroadcast 4 - 0
Powerbroadcast 18 - 0
Powerbroadcast 18 - 0
Powerbroadcast 7 - 0
Powerbroadcast 7 - 0
Powerbroadcast 10 - 0
Powerbroadcast 10 - 0
Hibernation cycle:
Powerbroadcast 0 - 1
Powerbroadcast 0 - 1
Powerbroadcast 10 - 0
Powerbroadcast 10 - 0
Powerbroadcast 4 - 0
Powerbroadcast 4 - 0
Powerbroadcast 7 - 0
Powerbroadcast 7 - 0
Powerbroadcast 18 - 0
Powerbroadcast 18 - 0
Powerbroadcast 10 - 0
Powerbroadcast 10 - 0
So there is a difference to see..