Qt5实现系统关机和重启的功能

来源:互联网 发布:工薪 理财 知乎 编辑:程序博客网 时间:2024/05/08 01:33

最近公司的项目需要软件自带系统关机和重启的功能,因此在msdn搜索了一下实现方法,windows下直接使用下列代码就可以了

xxx.h文件中添加

BOOL  MySystemShutdownOrRestart();

xxx.cpp文件中添加

#include<windows.h>

BOOL MainWindow::MySystemShutdownOrRestart()

{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

// Get a token for this process. 

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return(FALSE);

// Get the LUID for the shutdown privilege. 

LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);

tkp.PrivilegeCount = 1;  // one privilege to set    
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

// Get the shutdown privilege for this process. 

AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);

if (GetLastError() != ERROR_SUCCESS)

return FALSE;


// Shut down the system and force all applications to close. 
        /*
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |

SHTDN_REASON_FLAG_PLANNED))

*/

//restart the system
if (!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))
return FALSE;

//shutdown or restart was successful
return TRUE;

}

以后公司项目可能会换到Linux,到时候更新Linux下的系统关机重启方法。


1 0
原创粉丝点击