2011-02-11 58 views
6

每當用戶觸摸鍵盤或鼠標時,Windows都會重置空閒時間。我的應用程序需要在特定時刻重置空閒時間,但我無法弄清楚如何以編程方式執行此操作。以編程方式重置Windows XP空閒時間

以下操作不會使用VB,C#或QT4重置IDLE時間。
- 程序化鼠標移動/點擊。
- 程序化按鍵。
不知何故,Windows知道這些行爲是模擬的。

如何重置空閒時間?任何想法將不勝感激!

+0

爲什麼你需要重置空閒時間? – Anders 2011-02-11 00:26:12

+4

已經嘗試[飲鳥技術](http://www.goozex.com/community/cfs-filesystemfile.ashx/__key/CommunityServer.Discussions.Components.Files/7/1007.drinking_5F00_bird.jpg)? – Trinidad 2011-02-11 00:27:18

回答

4

使用SetThreadExecutionState()。 ES_SYSTEM_REQUIRED選項(2)重置系統空閒計時器。訪問pinvoke.net獲取所需的聲明。

3

如果您需要保持顯示狀態,則可以撥打SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_CONTINUOUS);

在2000/XP中,你可以使用ES_USER_PRESENT標誌(在Vista +不工作)

禁用屏幕保護程序,你可以處理WM_SYSCOMMAND的SC_SCREENSAVE(您必須是前臺窗口,否則使用SystemParametersInfo)

1

原則上SetThreadExecutionState()應該做你需要的。但是我發現它在一些現代Windows的某些情況下不能使用系統所需的標誌。對不起,我不記得確切的細節。

作爲後備,您可以通過使用空鼠標移動消息調用SendInput()來僞造一些輸入。我的猜測是你的輸入僞裝失敗,因爲你調用了SendMessage或PostMessage。

相關問題