Как программно изменить время простоя батареи в .Net на Windows Mobile 6 - PullRequest
0 голосов
/ 30 июня 2011

Мы используем C # .Net Compact Edition 3.5 с Windows Mobile 6.1 и не очень знакомы с вызовами C ++ или Windows API.Нам нужно программно изменить время простоя батареи / подозреваемого от установленного значения (обычно по умолчанию 3/5 минут) до 15 минут.Я нашел несколько примеров в Интернете, но пока ни один из них не работает, или я не знаю, как / не могу найти, как их реализовать, потому что они находятся в C ++ или не имеют объяснения или контекста для работы в C #.

        int test = SystemParametersInfo(SPI_SETBATTERYIDLETIMEOUT, 15, null, 0); //15 seconds, to test it actually working
        //test return 0

Как из .Net CE 3.5 в C # изменить время ожидания батареи в Windows Mobile 6.1?

Спасибо

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

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Я согласен с Гансом, что это, вероятно, лучший способ раздражать конечного пользователя, изменяя его устройство, не спрашивая.Тем не менее, я сделал нечто подобное для клиента, который хотел, чтобы все устройства поставлялись с идентичными настройками.Вместо того, чтобы иметь список изменений, чтобы сделать это быстрее в установщике.

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

\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts

.измените это через структуру

RegistryKey singleKey = 
     registryKey.OpenSubKey(
     "\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts", true);

singleKey.SetValue("BattSystemIdle", 600);
singleKey.Close();

Я не уверен на 100%, какой ключ реестра вы используете, но вы можете использовать отличный редактор реестра Breaksoft Mobile, чтобы найти именно тот ключ, который вам нужен.Изменяя ваше устройство и следя за изменениями клавиш, вы быстро найдете нужный вам параметр.

Редактировать: Dead Link - редактор реестра Breaksoft Mobile

Используйте альтернативу, представленную в комментариях ниже

MSDN - Тайм-ауты управления питанием

1 голос
/ 22 декабря 2014

Я не смог заставить бегло говорить точный метод для работы в проекте Windows Mobile 6 в VS 2008. Во-первых, путь \ в реестре был определен как префикс управляющего кода, во-вторых, вызвана строка RegistryKey singleKey ошибка во время сборки.Приведенный ниже код сработал:

var localMachine = Registry.LocalMachine;
var subKey = localMachine.OpenSubKey(@"\System\CurrentControlSet\Control\Power\Timeouts", true);
subKey.SetValue("BattSuspendTimeout", 600);

Тем не менее, для вступления в силу все же необходимо перезагрузиться.

0 голосов
/ 01 июля 2011

Для функции SystemParametersInfo вам потребуется выполнить P / Invoke с помощью команды dllimport в C #.У pinvoke.net есть пример сделать это в Windows.Чтобы перенести его на Windows Mobile, просто измените ссылки с user32.dll на coredll.dll.http://www.pinvoke.net/default.aspx/user32.systemparametersinfo

[DllImport("coredll.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, IntPtr pvParam, SPIF fWinIni);

Также рассмотрим, «Что если две программы сделали это»

...