回答
當按下電源按鈕時,電源管理器將發出狀態改變的通知。您可以要求PM通過致電RequestPowerNotifications向您發送通知,您必須發送一個point-to-point messgae queue(受管版本here)的句柄以獲取通知。
對於那些不想編寫所有膠水來完成這項工作的人,所有這些在SDF的PowerManagement class中已經爲您完成了。
也要事先警告,因爲你要求通知確實而不是意味着你的應用程序會在狀態改變發生之前得到通知。舉例來說,通常情況下,應用程序不會看到通知,並且幾乎可以肯定的是,即使您確實看到它,在暫停實際發生之前您也沒有時間執行任何操作。通常,您的處理程序將在設備恢復時運行(隨後是恢復狀態的任何處理程序)。
電源管理器不會等你,它只是廣播一條消息。在關閉之前,您不能使用它來運行代碼。
Hmph ...我有聲音播放,即使按下電源按鈕,仍繼續運行...所以我會嘗試將開關設置爲autoplay = false; – kape123 2010-02-25 20:58:08
任何想法爲什麼我得到「當試圖使用PowerManagement類時,無法從程序集」OpenNETCF.WindowsCE「加載類型'OpenNETCF.WindowsCE.PowerManagement'? – kape123 2010-02-25 21:26:27
聽起來就像你有一個程序集版本不匹配或者什麼東西 - 可能是多個不同版本的SDF二進制文件或其他東西的多個副本。 – ctacke 2010-02-25 22:04:08
不幸的是,在我使用的Windows CE 6設備上,在CoreDll中不存在CreateMsgQueue。還有其他建議嗎?
我唯一能想到的就是不斷檢查Environment.TickCount與設備的實時時鐘。如果時間前進但不是滴答滴答計數,那麼推測該設備正在睡覺。
不喜歡這個方案,因爲它會如果時間跳由於設備的實時時鐘出現故障被騙
我只是把CreateMsgQueue()進入XIP RPM二進制文件,而不需要源代碼或OEM幫幫我。您需要使用XDA論壇中的十六進制編輯器和一些工具。
<DllImport("coredll.dll", SetLastError:=True)> _
Public Shared Function CreateMsgQueue(ByVal lpszName As String, ByVal lpOptions As MsgQueueOptions) As IntPtr
End Function
還你應該創建一個簡單的驅動程序阻止斷電事件,您的駕駛員能夠撐起了節電過程中掉電設備上的事件。這樣你可以得到一個有保證的事件,你可以設置標誌並停止後臺運行過程,並存儲任何變量,然後在PowerUp事件中恢復它們,這也是WinCE設備驅動程序的標準evC++事件。真的很簡單。互聯網上有100多個演示源代碼,我已經在100多個網站上看到過。
- 1. 檢測時間按鈕被按下
- 2. 當按下音量按鈕時檢測
- 3. 按下主頁按鈕時檢測iOS
- 4. 當按下「x」或關閉按鈕時檢測到
- 5. 如何檢測按鈕按下和iphone
- 6. 如何檢測一個按鈕按下?
- 7. 如何在按下開始按鈕(Windows Phone)時按下「開始」按鈕(Windows Phone)
- 8. 如何檢測按下本地通知關閉按鈕
- 9. 如何檢測當在按鈕片斷android按下後按鈕?
- 10. 如何檢測何時按下按鈕並在android上釋放
- 11. jQuery Mobile和PhoneGap:如何檢測菜單按鈕是按
- 12. 在CardAction檢測按鈕按下BotBuilder
- 13. CKEditor - 檢測哪些按鈕被按下
- 14. 檢測按鈕按下使用Xamarin.iOS
- 15. 檢測哪個按鈕被按下
- 16. 掛鉤Windows Mobile 6.5手機開/關按鈕
- 17. Windows Mobile硬件按鈕
- 18. 如何檢測Arduino中按下按鈕的時間?
- 19. 如何檢測2個按鈕同時按下?
- 20. 檢測藍牙耳機通話按鈕按下android
- 21. 檢測到UILocalNotification關閉按鈕被按下?
- 22. 按下按鈕時振動手機
- 23. 如何刪除windows mobile的SIP按鈕
- 24. 檢測音量按鈕按
- 25. 強制關閉時按下按鈕
- 26. 活動在按下按鈕時關閉
- 27. 檢測按鈕的後退按鈕
- 28. 當你按下一個按鈕時Android會檢測到
- 29. 當按下返回按鈕時檢測/警告
- 30. 當鼠標按下按鈕進入QGraphicsItem時檢測到
Dupe:http://stackoverflow.com/questions/2331343/detect-and-prevent-delay-windows-mobile-power-off – 2010-02-25 20:31:51
我不會說這是一個騙局。他希望得到通知,但不能阻止它。 – ctacke 2010-02-25 20:47:02
我必須在這裏發泄我的挫敗感 - 現在Windows Mobile SDK的狀態是 - 可悲的。我開始後臺活動,無法關閉它 - 即使用戶按下了電源按鈕,它仍會繼續運行。另一方面,代碼應該採取行動,並停止該用戶說服後臺活動,無法執行。真棒,只是嚇人真棒... – kape123 2010-02-26 16:40:17