【问题标题】:Disable sleep mode in Windows Mobile 6在 Windows Mobile 6 中禁用睡眠模式
【发布时间】:2010-09-19 18:31:24
【问题描述】:

有谁知道我如何以编程方式在 Windows Mobile 上禁用/启用睡眠模式?

谢谢!

【问题讨论】:

    标签: c++ windows-mobile pocketpc


    【解决方案1】:

    可能通过将“系统电源状态”修改为 described here(但在 c# 中)

    该文章还描述了一种防止移动设备进入睡眠状态的方法(这可能不是您想要的),方法是定期调用本机函数 SystemIdleTimerReset()(以防止设备断电)。

    【讨论】:

      【解决方案2】:

      修改the Power Manager registry setting,影响您想要的特定睡眠条件(超时、电池、交流电源等)和名为“PowerManager/ReloadActivityTimeouts”的命名系统事件上的 SetEvent,以告诉操作系统重新加载设置。

      【讨论】:

        【解决方案3】:

        如果您希望程序在运行时不进入睡眠状态,最好的方法是创建一个调用 SystemIdleTimerReset、SHIdleTimerReset 并模拟按键触摸的 KeepAlive 类型函数。然后你需要调用它很多,基本上无处不在。

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

        此方法仅在用户手动启动应用程序时有效。

        如果您的应用程序是通过通知启动的(即在设备暂停时),那么您需要做更多的事情,否则您的应用程序将在很短的一段时间后暂停,直到用户将设备电源从暂停模式中退出.要处理此问题,您需要将设备置于无人值守电源模式。

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

        在无人值守模式使用过程中,仍然需要大量调用 KeepAlive,可以使用单独的线程休眠 x 毫秒并调用 keepalive 函数。

        请注意,无人值守模式不会使其退出睡眠模式,它会使设备处于奇怪的半清醒状态。

        因此,如果您在设备处于挂起模式时启动无人值守模式,它不会唤醒屏幕或任何东西。无人值守模式所做的就是阻止 WM 暂停您的应用程序。另一个问题是它不能在所有设备上运行,有些设备的电源管理不是很好,不管你做什么它都会暂停你。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多