tiempo suspension salir quitar pantalla modo laptop hibernar hibernando hibernación hibernacion desactivar como cambiar c++ windows-mobile pocketpc

c++ - suspension - Deshabilite el modo de suspensión en Windows Mobile 6



hibernando pc (3)

Modifique la configuración del registro de Power Manager que afecta la condición de reposo específica que desea (tiempo de espera, rebobinado, alimentación de CA, etc.) y el evento SetEvent en un evento del sistema llamado "PowerManager / ReloadActivityTimeouts" para indicar al sistema operativo que vuelva a cargar la configuración.

¿Alguien sabe cómo puedo desactivar / habilitar programáticamente el modo de suspensión en Windows Mobile?

¡Gracias!


Probablemente modificando los "Estados de alimentación del sistema" como se describe aquí (pero en c #)

Ese artículo también describe una forma de evitar que el dispositivo móvil se quede dormido (que no es exactamente lo que usted desea), llamando periódicamente a la función nativa SystemIdleTimerReset () (para evitar que el dispositivo se apague).


Si desea que su programa no se ponga en reposo mientras se está ejecutando, la mejor manera es crear una función de tipo KeepAlive que llame a SystemIdleTimerReset, SHIdleTimerReset y simule una pulsación de tecla. Entonces necesitas llamarlo mucho, básicamente en todas partes.

#include <windows.h> #include <commctrl.h> extern "C" { void WINAPI SHIdleTimerReset(); }; void KeepAlive() { static DWORD LastCallTime = 0; DWORD TickCount = GetTickCount(); if ((TickCount - LastCallTime) > 1000 || TickCount < LastCallTime) // watch for wraparound { SystemIdleTimerReset(); SHIdleTimerReset(); keybd_event(VK_LBUTTON, 0, KEYEVENTF_SILENT, 0); keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP | KEYEVENTF_SILENT, 0); LastCallTime = TickCount; } }

Este método solo funciona cuando el usuario inicia la aplicación de forma manual.

Si su aplicación se inicia con una notificación (es decir, mientras el dispositivo está suspendido), entonces necesita hacer más o su aplicación se suspenderá después de un período de tiempo muy corto hasta que el usuario apague el dispositivo del modo suspendido. Para manejar esto, debe poner el dispositivo en el modo de alimentación desatendida.

if(!::PowerPolicyNotify (PPN_UNATTENDEDMODE, TRUE)) { // handle error } // do long running process if(!::PowerPolicyNotify (PPN_UNATTENDEDMODE, FALSE)) { // handle error }

Durante el uso de modo desatendido, aún necesita llamar mucho a KeepAlive, puede usar un hilo separado que duerme durante x milisegundos y llama a la función de mantener activo.

Tenga en cuenta que el modo desatendido no lo saca del modo de suspensión, sino que pone el dispositivo en un estado medio medio despierto.

Por lo tanto, si inicia un modo desatendido mientras el dispositivo está en modo suspendido, no se activará la pantalla ni nada. Todo el modo desatendido hace que WM deje de suspender su aplicación. Además, el otro problema es que no funciona en todos los dispositivos, algunos dispositivos de administración de energía no son muy buenos y te suspenderán de todos modos sin importar lo que hagas.