Monitor Power Scheme Changes
Monitor Power Scheme Changes
Is there any way for a script to be notified when the power scheme changes?
-
- Posts: 2184
- Joined: 29 Mar 2015, 09:41
- Contact:
Re: Monitor Power Scheme Changes
There is one:
Code: Select all
GUID_POWERSCHEME_PERSONALITY := "245d8541-3943-4422-b025-13a784f679b7"
h := RegisterPowerSettingNotification(GUID_POWERSCHEME_PERSONALITY)
OnExit( Func("UnRegisterNotification").Bind(h) )
OnMessage(0x218, "WM_POWERBROADCAST")
Return
RegisterPowerSettingNotification(GUID) {
static DEVICE_NOTIFY_WINDOW_HANDLE := 0
VarSetCapacity(UUID, 16, 0)
DllCall("Rpcrt4\UuidFromString", Str, GUID, Ptr, &UUID)
Return DllCall("RegisterPowerSettingNotification", Ptr, A_ScriptHwnd, Ptr, &UUID, UInt, DEVICE_NOTIFY_WINDOW_HANDLE, Ptr)
}
UnRegisterNotification(handle) {
DllCall("UnregisterPowerSettingNotification", Ptr, handle)
}
WM_POWERBROADCAST(wp, lp) {
static powerschemes := { "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c": "GUID_MIN_POWER_SAVINGS"
, "a1841308-3541-4fab-bc81-f71556f20b4a": "GUID_MAX_POWER_SAVINGS"
, "381b4222-f694-41f0-9685-ff5bb260df2e": "GUID_TYPICAL_POWER_SAVINGS" }
DllCall("Rpcrt4\UuidToString", Ptr, lp + 16 + 4, PtrP, pStr)
GUID := StrGet(pStr)
DllCall("Rpcrt4\RpcStringFree", PtrP, pStr)
ToolTip % powerschemes[GUID]
}
Re: Monitor Power Scheme Changes
very nice handler!!
-
- Posts: 2184
- Joined: 29 Mar 2015, 09:41
- Contact:
Re: Monitor Power Scheme Changes
Thanks!
Re: Monitor Power Scheme Changes
I tried your solution, but, unfortunately, it only seems to monitor changes between different power scheme personalities. The solution I need requires that I be able to distinguish between power schemes that share a personality, so yours won't work.
-
- Posts: 2184
- Joined: 29 Mar 2015, 09:41
- Contact:
Re: Monitor Power Scheme Changes
You can choose what you'd like to monitor here.
Re: Monitor Power Scheme Changes
I don't think what I want is listed.