关键有两条:1.得到定时开始到现在的时间差
2.如何实现关闭计算机的功能
实现计算机关闭可以使用windows api解决。这里需要Qt Creator安装目录下的mingw\include的windows.h,倘若是用的VC编译器,使用VC里的windows.h
代码如下,调用该函数就可以实现关闭计算机的功能
#include “windows.h”
bool ShutDown::MySystemShutDown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
//获取进程标志
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return false;
//获取关机特权的LUID
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
//获取这个进程的关机特权
AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS) return false;
// 强制关闭计算机
//if ( !ExitWindow***(EWX_SHUTDOWN | EWX_FORCE,
// SHTDN_REASON_MAJOR_OPERATINGSYSTEM | SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED))
if ( !ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
return false;
return true;
}