检测并阻止/延迟窗口移动电源关闭

时间:2010-02-25 03:09:37

标签: c# windows-mobile winapi compact-framework

我有一个窗口移动应用程序,它需要检测电源关闭并在设备关闭之前执行一些操作。

我已经能够使用pinvoke检测设备是否正在关闭RequestPowerNotifications win32 api。

但是我无法弄清楚如何长时间关闭电源以运行我的代码。

2 个答案:

答案 0 :(得分:5)

作为一个应用程序,你不能阻止它,除非OEM以某种方式为此提供了一个自定义API(我从来没有在任何WInMo设备上看到它,只在少数自定义CE设备上)。当电源管理器被告知暂停时,它会发出通知并立即开始关机。唯一有机会延迟事物的子系统是驱动程序,在此期间它们无法调用Win32 API(这意味着可以关闭外设,保存寄存器等)。

我也不能说我曾经看过申请这么做的充分理由。如果用户按下电源按钮,他们想要关机 - 不被应用程序禁止。如果操作系统需要断电(例如由于低功率),那么无论如何都要阻止它。

答案 1 :(得分:0)

正如ctacke指出:这很脏。但是,只要您的电源通知线程指示设备正在尝试暂停,您就可以尝试SetSystemPowerState( POWER_STATE_ON );

http://msdn.microsoft.com/en-us/library/ms920754.aspx

-PaulH