一.(Un)RegisterPowerSettingNotification(Vista+)
注册电源事件,允许用WM_POWERBROADCAST捕获消息,如笔记本电脑电量的使用,百分比发生变化会发送消息,还有一些键盘的物理按键
Registers the application to receive power setting notifications for the specific power setting event.
二.GetSystemPowerStatus 获取电源状态
SYSTEM_POWER_STATUS status;
GetSystemPowerStatus(&status);
比如查看电池现在的百分比及可用时间
三.GetDevicePowerState获取设备电源状态
Retrieves the current power state of the specified device. This function cannot be used to query the power state of a display device.BOOL WINAPI GetDevicePowerState(
__in HANDLE hDevice,
__out BOOL* pfOn
);
四.WTS(Un)RegisterSessionNotification
http://hi.baidu.com/lifuchao2008/blog/item/efc44150d3691665843524d4.html
但切换用户时,如用户锁定,远程登录触发消息
switch(message)
{
case WM_WTSSESSION_CHANGE:
{
switch(wParam)
{
case WTS_CONSOLE_CONNECT:
MessageBox("WTS_CONSOLE_CONNECT", "Esmile", MB_OK );
break;
case WTS_CONSOLE_DISCONNECT:
MessageBox("WTS_CONSOLE_DISCONNECT",
"Esmile", MB_OK );
break;
case WTS_SESSION_LOCK:
MessageBox("WTS_SESSION_LOCK",
"Esmile", MB_OK );
break;
case WTS_SESSION_UNLOCK:
MessageBox("WTS_SESSION_UNLOCK",
"Esmile", MB_OK );
break;
case WTS_SESSION_LOGOFF:
MessageBox("WTS_SESSION_LOGOFF",
"Esmile", MB_OK );
break;
case WTS_SESSION_LOGON:
MessageBox("WTS_SESSION_LOGON",
"Esmile", MB_OK );
break;
default:
break;
}
}
break;
default:
break;
}
五.WTSGetActiveConsoleSessionId
得到当前登录用户的会话ID
DWORD WTSGetActiveConsoleSessionId(void);
六.ProcessIdToSessionId
根据进程ID获取SessionIdDWORD a=WTSGetActiveConsoleSessionId();
DWORD b=0;
ProcessIdToSessionId(GetCurrentProcessId(),&b);
a==b;
本文主要介绍了几个用于Windows电源管理的API,包括RegisterPowerSettingNotification用于注册电源事件监听,GetSystemPowerStatus获取系统电源状态,GetDevicePowerState获取设备电源状态,以及WTS系列函数用于处理会话管理和ID获取。这些API对于开发需要响应电源变化的应用程序非常有用。
227

被折叠的 条评论
为什么被折叠?



