123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <QOperatingSystemVersion>
- #include <windows.h>
- #include "PowerComponentWin.h"
- #include "powrprof.h"
- #include "utils/Utils.h"
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- PowerComponentWin::PowerComponentWin() : PowerComponent(nullptr), m_hasPrivileges(false)
- {
- m_hasPrivileges = WinUtils::getPowerManagementPrivileges();
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void PowerComponentWin::doDisableScreensaver()
- {
- SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- void PowerComponentWin::doEnableScreensaver()
- {
- SetThreadExecutionState(ES_CONTINUOUS);
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- bool PowerComponentWin::Suspend()
- {
- return SetSuspendState(false, true, false) == TRUE;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- bool PowerComponentWin::Reboot()
- {
- return InitiateShutdownW(NULL, NULL, 0, SHUTDOWN_INSTALL_UPDATES | SHUTDOWN_RESTART,
- SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_OTHER | SHTDN_REASON_FLAG_PLANNED) == ERROR_SUCCESS;
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- bool PowerComponentWin::PowerOff()
- {
- DWORD shutdownFlags = SHUTDOWN_INSTALL_UPDATES | SHUTDOWN_POWEROFF;
- if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows8)
- shutdownFlags |= SHUTDOWN_HYBRID;
- return InitiateShutdownW(NULL, NULL, 0, shutdownFlags,
- SHTDN_REASON_MAJOR_APPLICATION | SHTDN_REASON_MINOR_OTHER | SHTDN_REASON_FLAG_PLANNED) == ERROR_SUCCESS;
- }
|