Controlla se un dispositivo Windows Mobile è inattivo

Ho un programma Windows Mobile 5 (framework compatto 3.5) che devo essere in grado di rilevare quando il dispositivo è inattivo.

In questo momento sto solo controllando se la retroilluminazione è spenta. Come questo:

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

Penso che questo potrebbe essere vicino, ma mi piacerebbe sapere se il dispositivo non è veramente utilizzato.

Stai utilizzando la funzione corretta, semplicemente controlla gli stati (che sono flag bit a bit):

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

con POWER_STATE_IDLE = 0x00100000 .

Modifica: per rispondere al tuo commento, guarda la funzione RequestPowerNotification . Riceverai il messaggio POWER_BROADCAST quando lo stato di alimentazione cambia.