Программно сбросить время простоя Windows XP
Windows сбрасывает время простоя каждый раз, когда пользователь касается клавиатуры или мыши. Мое приложение должно сбросить время простоя в определенные моменты, но я не могу понять, как это сделать программно.
следующее не сбрасывает время простоя с помощью VB, C# или QT4.
- Программное движение мыши / щелчок.
- Программное нажатие клавиши.
Каким-то образом Windows знает, что эти действия имитируются.
Как я могу сбросить время простоя? Любой мысли будут высоко оценены!
3 ответов
использовать SetThreadExecutionState(). Параметр ES_SYSTEM_REQUIRED (2) сбрасывает таймер простоя системы. Визит pinvoke.net для требуемых деклараций.
Если вам нужен дисплей, чтобы остаться, например, вы бы вызвать SetThreadExecutionState(ES_DISPLAY_REQUIRED|ES_CONTINUOUS);
на 2000 / XP вы можете использовать флаг ES_USER_PRESENT (не работает на Vista+)
чтобы отключить экранную заставку, вы можете обработать SC_SCREENSAVE WM_SYSCOMMAND (вы должны быть окном переднего плана, иначе используйте SystemParametersInfo)
в принципе SetThreadExecutionState () должен делать то, что вам нужно. Но я обнаружил, что он не работает с флагом требуемой системы в некоторых ситуациях на некоторых современных окнах. Извините, я не могу вспомнить точные детали.
в качестве резервного вы можете просто подделать некоторые входные данные, вызвав SendInput () с нулевым сообщением перемещения мыши, например. Я предполагаю, что ваша подделка ввода не удалась, потому что вы вызвали SendMessage или PostMessage.