赞
踩
代码网上一搜一堆,截获WM_ENDSESSION和WM_QUERYENDSESSION消息,但是自己试了下,还是会正常关机,无法出现阻止的效果。
需要修改注册表HKEY_CURRENT_USER,下的Control Panel\Desktop里的WaitToKillAppTimeout、AutoEndTasks和HungAppTimeout得值,
修改方式如下:
RegOpenKey(HKEY_CURRENT_USER,”Control Panel\Desktop”,&_regkey);
RegSetValueEx(_regkey, “WaitToKillAppTimeout”, 0, REG_SZ, (const BYTE*)”120000”, 6);
RegSetValueEx(_regkey, “AutoEndTasks”, 0, REG_SZ, (const BYTE*)”0”, 6);
RegSetValueEx(_regkey, “HungAppTimeout”, 0, REG_SZ, (const BYTE*)”120000”, 6);
RegCloseKey(_regkey);
挂起3个多小时,超时3个多小时,这样再关机运行程序,就会出现提示阻止关机或注销的警告。
//Qt的话,先把注册标的值给该了,然后连接commitDataRequest(QSessionManager&)信号,
在关机的时候,处理一些自己的业务,如果在超时时间内的也会弹出阻止关机/注销的提示。
在main函数中连接消息
QObject::connect(&a, SIGNAL(commitDataRequest(QSessionManager&)), &w, SLOT(showExitSystemInfo(QSessionManager&)));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。