zoukankan      html  css  js  c++  java
  • QT 调用Windows API实现关机

    以前自己不知道怎么定时关机,于是用QT写了个程序来实现。

    关键有两条:1.得到定时开始到现在的时间差

                     2.如何实现关闭计算机的功能

    实现计算机关闭可以使用windows api解决。这里需要Qt Creator安装目录下的mingw\include的windows.h,倘若是用的VC编译器,使用VC里的windows.h

    代码如下,调用该函数就可以实现关闭计算机的功能

     1 #include “windows.h”
     2 
     3 bool ShutDown::MySystemShutDown()
     4 {
     5     HANDLE hToken;
     6     TOKEN_PRIVILEGES tkp;
     7 
     8     //获取进程标志
     9     if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
    10          return false;
    11 
    12     //获取关机特权的LUID
    13     LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,    &tkp.Privileges[0].Luid);
    14     tkp.PrivilegeCount = 1;
    15     tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    16 
    17     //获取这个进程的关机特权
    18     AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
    19     if (GetLastError() != ERROR_SUCCESS) return false;
    20 
    21     // 强制关闭计算机
    22     if ( !ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0))
    23           return false;
    24     return true;
    25 }
  • 相关阅读:
    「SPOJ10707」Count on a tree II
    UVA 11021 /概率
    power oj/2360/Change
    POJ1613 147/思维题
    Power oj2498/DP/递推
    HDU4815/计数DP
    444A/CF
    观光公交noip<贪心>
    2014 Shanghai Invitation Contest
    POJ1734/Floyd求最小环
  • 原文地址:https://www.cnblogs.com/Romi/p/2516996.html
Copyright © 2011-2022 走看看