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

最近公司的项目需要软件自带系统关机和重启的功能,因此在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下的系统关机重启方法。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值