Компьютер не просыпается после снаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Компьютер не просыпается после сна

Сообщение Anonymous »

Я пытаюсь перевести компьютер в спящий режим в определенное время (00:05) и проснуться в 07:00.

Код: Выделить всё

            SYSTEMTIME sT;
GetLocalTime(&sT);
if (sT.wHour == 0)
{
if (sT.wMinute >= 5)
{
SYSTEMTIME sT = {};
GetLocalTime(&sT);
sT.wHour = 5; // UTC+2 I am
sT.wMinute = 0;
sT.wSecond = 0;
sT.wMilliseconds = 0;
LARGE_INTEGER WaitTime = {};
SystemTimeToFileTime(&sT, (LPFILETIME)&WaitTime);
HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
if (hTimer)
{
if (SetWaitableTimer(hTimer, &WaitTime, 0, NULL, NULL, TRUE))
{
if (SetSuspendState(FALSE, FALSE, FALSE))
{
}
}
CloseHandle(hTimer);
}
}
}
}
Перед этим я включил токен выключения:

Код: Выделить всё

        SYSTEM_POWER_CAPABILITIES sysPowCab = { 0 };
if (CallNtPowerInformation(SystemPowerCapabilities, NULL, 0, &sysPowCab, sizeof(SYSTEM_POWER_CAPABILITIES)) == 0)
{
HANDLE hToken = 0;
TOKEN_PRIVILEGES tkp = {};

if (OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
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);

//Enable allow wake up timer
GUID* pPwrGUID;
GUID subGUID = GUID_SLEEP_SUBGROUP;
GUID BriGUID = GUID_ALLOW_RTC_WAKE;

DWORD ret = PowerGetActiveScheme(NULL, &pPwrGUID);
if (ret == ERROR_SUCCESS)
{
ret = PowerWriteACValueIndex(NULL, pPwrGUID, &subGUID, &BriGUID, 1);
if (ret == ERROR_SUCCESS)
{
}
}
}
}
Это работает, только если я устанавливаю очень близкое время, например, через 5 минут после сна. В противном случае это не сработает.
В чем может быть проблема? Параметры электропитания -> Таймеры пробуждения = уже включено.

Подробнее здесь: https://stackoverflow.com/questions/792 ... fter-sleep
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»