可以,通常 捕获 WM_QUERYENDSESSION 消息,或 它发出的 WM_ENDSESSION 消息 便可。
例如 win API 程序中:
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) {
...
switch(message)
{
case WM_QUERYENDSESSION : 这里获得了关机事件; break;
case WM_ENDSESSION: 这里获得了; break;
....
}
}
windows是消息机制系统,关机事件,其实就是用户发送一个关机消息,windows处理这个消息。你去查查具体的api,看看能不能截取关机消息。。。本人略忙,同是吊丝程序员,您老就自个去查api。
可能需要写驱动程序,并不好做,如果使用C++关机,那就简单多了!EXITWINDOWSEX()即可关机!
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)