一.(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
http://tech.ddvip.com/2006-04/11444382604312.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获取SessionId
DWORD a=WTSGetActiveConsoleSessionId();
DWORD b=0;
ProcessIdToSessionId(GetCurrentProcessId(),&b);
a==b;
七.POWERBROADCAST_SETTING
当在WM_POWERBROADCAST消息中捕获消息时可以转化成这个结构体
参考:http://blog.csdn.net/breeze_vickie/archive/2009/07/09/4334257.aspx