Я не хочу, чтобы в качестве режима сна по умолчанию использовался гибридный сон, но иногда я хочу использовать гибридный сон.
Как мне сказать Windows "войти в гибридный сон"?
Я не хочу, чтобы в качестве режима сна по умолчанию использовался гибридный сон, но иногда я хочу использовать гибридный сон.
Как мне сказать Windows "войти в гибридный сон"?
Я закончил тем, что создал хакерскую программу, которая делает это путем временного изменения настроек, но это действительно не то, что я искал ... если кто-то придумает лучшее решение, обязательно опубликуйте его. В противном случае, если кто-нибудь найдет это полезным, вот код:
#include <tchar.h>
#include <Windows.h>
#include <PowrProf.h>
extern "C"
//int _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
int _tmain(int, LPTSTR[])
{
ULONG error = 1;
HANDLE hSem = CreateSemaphore(NULL, 1, 1, TEXT("Global\\HybridSleep.{A88FD0FD-4C24-23c0-88F6-B51A145FB444}"));
if (hSem != NULL && GetLastError() != ERROR_ALREADY_EXISTS)
{
GUID *guid,
allowHybridSleepGuid = { 0x94ac6d29, 0x73ce, 0x41a6, 0x80, 0x9f, 0x63, 0x63, 0xba, 0x21, 0xb4, 0x7e },
sleepSubgroupGuid = { 0x238C9FA8, 0x0AAD, 0x41ED, 0x83, 0xF4, 0x97, 0xBE, 0x24, 0x2C, 0x8F, 0x20 };
SYSTEM_POWER_STATUS sps;
if (GetSystemPowerStatus(&sps))
{
error = PowerGetActiveScheme(NULL, &guid);
if (error == ERROR_SUCCESS)
{
__try
{
ULONG index;
error = (sps.ACLineStatus ? PowerReadACValueIndex : PowerReadDCValueIndex)(NULL, guid, &sleepSubgroupGuid, &allowHybridSleepGuid, &index);
if (error == ERROR_SUCCESS && index <= 1)
{
__try
{
ULONG newIndex = 1 - index; //Opposite old value
error = (sps.ACLineStatus ? PowerWriteACValueIndex : PowerWriteDCValueIndex)(NULL, guid, &sleepSubgroupGuid, &allowHybridSleepGuid, newIndex);
if (error == ERROR_SUCCESS)
{
PowerSetActiveScheme(NULL, guid);
SetSuspendState(FALSE, FALSE, FALSE);
}
}
__finally
{
if ((sps.ACLineStatus ? PowerWriteACValueIndex : PowerWriteDCValueIndex)(NULL, guid, &sleepSubgroupGuid, &allowHybridSleepGuid, index) == ERROR_SUCCESS)
{ PowerSetActiveScheme(NULL, guid); }
}
}
}
__finally { LocalFree(guid); }
}
}
}
return error;
}
Он выполняет противоположную текущей настройке гибридного сна.
На панели управления у вас есть возможность создать свой собственный план питания. Вы можете изменить настройки по своему вкусу через это. Вы также можете найти больше информации здесь: http://windows.microsoft.com/en-us/windows7/Sleep-and-hibernation-frequently-asked-questions