我想防止顯示器進入睡眠狀態(窗口設置,而不是顯示器設置)。我正在使用C++。我打什麼電話?我可以在C++中使用哪些代碼來禁用節能?
5
A
回答
13
class KeepDisplayOn
{
public:
KeepDisplayOn()
{
mPrevExecState = ::SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
::SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &mPrevScreenSaver, 0);
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, FALSE, NULL, 0);
}
~KeepDisplayOn()
{
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, mPrevScreenSaver, NULL, 0);
::SetThreadExecutionState(mPrevExecState);
}
private:
UINT mPrevScreenSaver;
EXECUTION_STATE mPrevExecState;
};
3
SetThreadExecutionState(ES_DISPLAY_REQUIRED|ES_CONTINUOUS);
+0
這項工作? – 2009-11-28 01:11:54
5
像第一反應確實不修改全局系統狀態更簡單的方法:
在你的窗口過程中,添加一個處理WM_SYSCOMMAND
。當wParam爲SC_MONITORPOWER
時,返回0而不是推遲到DefWindowProc
。 (當wParam是任何其他值時,請確保您處理該消息或將其傳遞到DefWindowProc
,否則用戶將無法在運行時調整窗口。)
1
每分鐘左右擺動鼠標。一旦你設置線程執行狀態ES_DISPLAY_REQUIRED
mouse_event(MOUSEEVENTF_MOVE,1,0,0,0);
mouse_event(MOUSEEVENTF_MOVE,-1,0,0,0);
Sleep(60000);
相關問題
- 1. 我可以使用哪些代碼在Java中提示用戶?
- 2. 您可以使用哪些技術來分析您的代碼
- 3. 我可以使用哪些技術來調試我的Clojure代碼?
- 4. 哪些代碼可以被用來創建在JavaScript
- 5. 我需要更改哪些代碼才能使用代碼?
- 6. 我可以使用哪些代碼來防止運行時錯誤?
- 7. 我的應用可以使用哪些設置來節省電池壽命?
- 8. 我在哪裏可以保存在Java代碼中使用
- 9. 可以使用哪些數據結構來增強代碼可維護性?
- 10. 我可以更改哪些代碼以使此代碼正常工作?
- 11. 我現在可以使用HTML5的哪些功能?
- 12. 我可以使用代碼
- 13. 我可以使用哪些字體?
- 14. 我可以使用哪些nginx版本?
- 15. 我可以使用PHP反射來提取功能代碼嗎?
- 16. 我可以使用什麼來剖析C++模塊代碼android
- 17. 我們可以使用googletest(gtest)來測試C代碼
- 18. 我可以使用哪些gdb命令來提高我的調試技能?
- 19. 我在哪裏可以看到C++標準庫中使用的代碼?
- 20. 我只需選擇其中一個按鈕就可以使用哪些代碼?
- 21. 可以使用哪個庫/程序來生成Java字節碼?
- 22. 我可以做些什麼來提高Java代碼的性能?
- 23. 如何測試我的PHP代碼 - 我可以使用哪些測試框架?
- 24. 可以使用哪些服務來監控前端性能?
- 25. Mandriva Entreprise Server 5.2可以使用哪些urpmi源代碼?
- 26. 我可以在文檔上使用哪些功能來適時應用功能,包括未來的元素?
- 27. 我應該避免在C++中使用#define嗎?爲什麼,我可以使用哪些替代方案?
- 28. 我在哪裏可以在Ubuntu上保存我的C代碼
- 29. 我可以使用哪些地圖來追蹤車隊?
- 30. 我可以使用哪些庫來製作微型Windows程序?
不錯的使用RAII – 2009-06-16 19:20:47
但設置屏幕保護程序的超時時間是沒有必要的。如果用戶想在應用程序運行時更改屏幕保護程序設置,該怎麼辦? – macbirdie 2009-06-17 13:32:19