Как получить значение расширенных настроек мощности для сна после - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть приложение, которому нужно установить сон после установки значения, теперь у меня есть коды, которые получают настройку значения спящего режима из плана электропитания, и теперь моя задача - получить значения настройки из режима сна после.

enter image description here

Что, если я хочу получить СОН ПОСЛЕ?Я пытаюсь использовать GUID "29f6c1db-86da-48c5-9fdb-f2b67b1f44da" в качестве PowerSettingsGuid, чтобы получить значение Sleep After, но оно не работает, и оно всегда получает значения Hibernate.

Subgroup GUID: 238c9fa8-0aad-41ed-83f4-97be242c8f20  (Sleep)
GUID Alias: SUB_SLEEP
Power Setting GUID: 29f6c1db-86da-48c5-9fdb-f2b67b1f44da  (Sleep after)
  GUID Alias: STANDBYIDLE
  Minimum Possible Setting: 0x00000000
  Maximum Possible Setting: 0xffffffff
  Possible Settings increment: 0x00000001
  Possible Settings units: Seconds
Current AC Power Setting Index: 0x00000708
Current DC Power Setting Index: 0x00000384

Power plan group

Ниже приведены коды, которые я скопировал на Как получить значение расширенных настроек электропитания после

private static Guid GUID_SLEEP_SUBGROUP = new Guid("238c9fa8-0aad-41ed-83f4-97be242c8f20");
private static Guid GUID_HIBERNATEIDLE = new Guid("9d7815a6-7ee4-497e-8888-515a05f02364");
private static Guid GUID_STANDBYIDLE = new Guid("29f6c1db-86da-48c5-9fdb-f2b67b1f44da");

[DllImport("powrprof.dll")]
static extern uint PowerGetActiveScheme(IntPtr UserRootPowerKey, ref IntPtr ActivePolicyGuid);

[DllImport("powrprof.dll")]
static extern uint PowerReadACValue(IntPtr RootPowerKey,
        ref Guid SchemeGuid,
        ref Guid SubGroupOfPowerSettingGuid, 
        ref Guid PowerSettingGuid, 
        ref int Type,ref int Buffer, 
        ref uint BufferSize);

private void Get_SLEEP_AFTER_SETTINGS()
{
    var activePolicyGuidPTR = IntPtr.Zero;
    PowerGetActiveScheme(IntPtr.Zero, ref activePolicyGuidPTR);

    var activePolicyGuid = Marshal.PtrToStructure<Guid>(activePolicyGuidPTR);
    var type = 0;
    var value = 0;
    var valueSize = 4u;
    PowerReadACValue(IntPtr.Zero, ref activePolicyGuid, ref GUID_SLEEP_SUBGROUP, ref GUID_STANDBYIDLE, ref type, ref value, ref valueSize);

    var message = $"Sleep setting is {value} seconds.";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...