2012-07-11 65 views
0

我試圖檢測Windows Mobile應用程序中的空閒時間,並在此非活動時間段之後顯示屏幕鎖定。這個鏈接http://blog.opennetcf.com/ctacke/2009/05/19/DetectingApplicationIdle.aspx給出了一個提示,但我發現這隻適用於單一的形式。在Windows Mobile中微調應用程序空閒時間

如何在具有多種表單的應用程序中使用相同的代碼。我嘗試在每個表單的InitializeComponent()後面實現此代碼,並使用Activate和GotFocus事件形式的Reset()函數,以便在用戶通過輸入PIN號碼關閉屏幕鎖定後重置定時器。但這似乎不適用於多種形式,並且定時器不會重置,但它每分鐘都會持續觸發。即使我正在處理應用程序,事件每隔1分鐘就會觸發一次(按照示例代碼),這是不正確的。

任何人都可以建議如何在整個應用程序中使用此功能。

預先感謝任何解決方案。

回答

1

我們需要查看您的代碼以瞭解錯誤,但該博客條目中提出的方法使用IMessageFilter實現。這涉及到Windows消息泵,這是應用程序範圍內的,而不是單一表單系統。我在兩種解決方案中使用完全相同的技術來進行應用程序範圍內的空閒檢測,並且運行良好。

我的猜測是,你的IMessageFilter實例的使用範圍有問題。如果您將其創建爲Form級別的變量(如該博客中的樣本),那麼在關閉過濾器所處理的表單並且不再有效時。如果您有多個表單,則需要將其放在模型中的其他位置,以便只要應用程序啓動就可以存活。

+0

Hello Chris我將InactivityFilter類添加爲公共類,並將此m_filter用作每個表單的Form級別變量。我知道這必須在某個地方宣佈,以便在應用程序啓動後立即解僱,並嘗試將其放入Program.cs中,但這是不允許的。出現此錯誤「'm_filter_InactivityElapsed':無法在靜態類中聲明實例成員」。請協助完成此功能「您需要將其放置在模型中的其他位置,以便在應用程序啓動時能夠存活」,以便在整個應用程序中檢測到空閒時間。 – 2012-07-12 05:34:41

0

如何使用GetIdleTime?看起來像這樣,與一個計時器搭配起來,這個計時器可以檢測到它,可以檢測到系統空閒並允許你顯示屏幕鎖定。

相關問題