目标:Windows session logoff时得到通知,进行一些记录/清理工作
测试平台: win7 x64
logoff时系统会发送WM_ENDSESSION消息,如果某个应用对这个消息的处理返回0,那么logoff动作会暂停,系统停止给其他应用发送WM_QUERYENDSESSION消息。
如果返回TRUE,那么系统后续会给响应的应用发送WM_ENDSESSION消息。
我们可以在收到这两个消息时进行自己的处理。
下面代码里还有一个WTSRegisterSessionNotification(),本意是向系统注册session变化消息,并在WndProc-》WM_WTSSESSION_CHANGE里进行处理。
但测试发现logoff好像没有收到WM_WTSSESSION_CHANGE消息,这个问题待有时间再研究。
#include <windows.h> #include <Wtsapi32.h> #include <tchar.h> int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdline, int nCmdShow)//Windows程序的入口为WinMain函数 { HWND hwnd;//定义窗口句柄 MSG msg;//定义消息结构变量 WNDCLASS wndclass;//定义窗口类的结构变量 wndclass.style=CS_HREDRAW|CS_VREDRAW;//改变窗口大小这重绘 wndclass.lpfnWndProc=WndProc;//窗口函数为WndProc wndclass.cbClsExtra=0;//窗口类无扩展 wndclass.cbWndExtra=0;//窗口实例无扩展 wndclass.hInstance=hInstance;//注册窗口实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//用箭头光标 wndclass.hbrBackground=(H