WH_FOREGROUNDIDLE останавливается, когда программа теряет фокус

Я пытаюсь выполнить интенсивную фоновую обработку процессора из программы на основе формы. Я использую WH_FOREGROUNDIDLE для обнаружения простоя. Хук выполняет некоторую обработку, обновляет форму и снова ждет хук.

Он отлично работает до тех пор, пока я не нажму на какую-нибудь другую программу, после чего хук остановится.
Если я нажму на форму, хук простоя начнется снова.

Есть ли способ обойти это? Или я использую неправильный метод для достижения своей цели?


person Curtis    schedule 15.01.2015    source источник


Ответы (1)


Вы можете использовать GetLastInputInfo чтобы определить, простаивает ли пользователь для текущего процесса. Это полезно, например, в программах чата для пометки пользователя как отсутствующего. Однако он не представляет общесистемное состояние простоя. Но тестирование этого на таймере позволит вам запускать вашу задачу только тогда, когда пользователь в данный момент не взаимодействует с приложением, не полагаясь на сообщения, которые доставляются только из-за активности пользователя.

person patthoyts    schedule 15.01.2015