Как получить время перехода компьютера в спящий режим в C#
Цитата: Мохмад от 21.02.2021, 11:59Создаю приложение для управления спящим режимом в Windows. Я знаю что такие программы уже существуют, и намного лучше моей. Но я создаю для того что бы научиться.
Когда запускаю свою программу, должны стоять значения времени перехода в спящий режим и экрана. Как мне получить эти значения?
Я уже как изменить эти значения (powercfg /change ...), но как получить текущие значения?
Создаю приложение для управления спящим режимом в Windows. Я знаю что такие программы уже существуют, и намного лучше моей. Но я создаю для того что бы научиться.
Когда запускаю свою программу, должны стоять значения времени перехода в спящий режим и экрана. Как мне получить эти значения?
Я уже как изменить эти значения (powercfg /change ...), но как получить текущие значения?
Цитата: XpucT от 04.03.2021, 14:24Добрый день. У нас принято здороваться. Ознакомьтесь с правилами форума.
Первое, что приходит на ум, это запрос cmd:
powercfg /list
Откуда можно спарсить строку на русском у текущей схемы электропитания:Текущий индекс настройки питания от сети: 0x00000384
Шестнадцатеричное число 384 на конце в десятеричном будет равно 600 (это секунды), что в свою очередь равно 10 минутам.
Если не хочется парсить cmd, можно обратиться к реестру:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes
У текущего GUID схемы электропитания есть параметрACSettingIndex, значение которого = времени, которое Вам нужно.
Если параметра нет, значит значение установлено по умолчанию, которое в свою очередь равно 10 минутам.
Если не хочется через реестр, можно с помощью класса
Win32_PowerPlanusing (ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\cimv2\power", $"SELECT * FROM Win32_PowerPlan")) var schemes = mos.Get().Cast<ManagementObject>(); ...
Добрый день. У нас принято здороваться. Ознакомьтесь с правилами форума.
Первое, что приходит на ум, это запрос cmd: Скопированоpowercfg /list
Откуда можно спарсить строку на русском у текущей схемы электропитания: СкопированоТекущий индекс настройки питания от сети: 0x00000384
Шестнадцатеричное число 384 на конце в десятеричном будет равно 600 (это секунды), что в свою очередь равно 10 минутам.
Если не хочется парсить cmd, можно обратиться к реестру:
СкопированоHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\User\PowerSchemes
У текущего GUID схемы электропитания есть параметр СкопированоACSettingIndex, значение которого = времени, которое Вам нужно.
Если параметра нет, значит значение установлено по умолчанию, которое в свою очередь равно 10 минутам.
Если не хочется через реестр, можно с помощью класса СкопированоWin32_PowerPlan
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\cimv2\power", $"SELECT * FROM Win32_PowerPlan")) var schemes = mos.Get().Cast<ManagementObject>(); ...