Как выбрать гибридный сон?

Я не хочу, чтобы мое действие сна по умолчанию было гибридным сном, но иногда я хочу использовать гибридный сон.

Как я говорю Windows, "войдите гибридный сон"?


Примечание: Я не прошу опцию "сна" (резервное устройство) быть замененным гибридным действием сна. Мне нужны оба, чтобы быть доступным.

1
задан 09.05.2011, 19:59

0 ответов

Я закончил тем, что делал hacky программу, которая делает это путем временного изменения настроек, но это действительно не то, что я искал..., если кто-то предлагает лучшее решение, действительно отправьте его. Иначе, в случае, если кто-либо находит это полезным, вот код:

#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;
}

Это выполняет противоположность текущей установки Hybrid Sleep.

0
ответ дан 24.11.2019, 02:31

В панели управления у Вас есть опция создать Вашу собственную схему управления питанием. Вы смогли изменять настройки к своей симпатии через это. Вы также могли бы найти больше информации здесь: http://windows.microsoft.com/en-us/windows7/Sleep-and-hibernation-frequently-asked-questions

-1
ответ дан 24.11.2019, 02:31

Теги

Похожие вопросы