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 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM