Monitor Power Scheme Changes
Posted: 22 Jan 2019, 15:34
Is there any way for a script to be notified when the power scheme changes?
Let's help each other out
https://www.autohotkey.com/boards/
https://www.autohotkey.com/boards/viewtopic.php?f=76&t=61302
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]
}