Проверьте, не работает ли устройство Windows Mobile - PullRequest
3 голосов
/ 08 июня 2010

У меня есть программа для Windows Mobile 5 (Compact Framework 3.5), которую нужно уметь обнаруживать, когда устройство находится в режиме ожидания.

Сейчас я просто проверяю, выключена ли подсветка. Как это:

[DllImport("coredll.dll", EntryPoint = "sleep", SetLastError = true)]
internal static extern void sleep(int dwMilliseconds);

....

//Get the current power state of the system
int winError = CoreDLL.GetSystemPowerState(systemStateName, out systemPowerStates);
if (winError == 0)
{
    //If the backlight is off, consider the state to be idle.
    if (systemStateName.ToString() == "backlightoff")
    {
        idle = true;
    }
}

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

1 Ответ

1 голос
/ 08 июня 2010

Вы используете правильную функцию, просто проверьте состояния (которые являются побитовыми флагами):

if ((systemPowerStates & POWER_STATE_IDLE) == POWER_STATE_IDLE) {
  idle = true;
}

с POWER_STATE_IDLE = 0x00100000.

Редактировать: чтобы ответить на ваш комментарий, посмотрите на функцию RequestPowerNotification . При изменении состояния питания вы получите сообщение POWER_BROADCAST .

...