Я предполагаю, что вы хотите определить время простоя, но только когда ваше приложение активно.Затем вы должны точно определить, что вы подразумеваете под активностью приложения.Когда ваше приложение активно (по вашему собственному определению), вы можете через равные промежутки времени вызывать GetLastInputInfo , чтобы определить время простоя вашего приложения, когда оно активно (например, используя какой-то таймер).
Windows имеет концепцию окна переднего плана, и текущее окно переднего плана можно восстановить, используя GetForegroundWindow .Вы можете использовать GetWindowThreadProcessId , чтобы найти идентификатор процесса, владеющего окном переднего плана.Если этот идентификатор процесса является вашим идентификатором процесса, вы знаете, что вы являетесь основным процессом, даже если ваше приложение имеет несколько окон.Вы должны будете делать это обнаружение через регулярные промежутки времени так же, как вы должны проверять время простоя.
Вас не должно беспокоить, что GetLastInputInfo
будет предоставлять только информацию о сеансе.Если несколько пользователей вошли в систему на одном и том же компьютере Windows, у каждого из них будет свой собственный сеанс, но другой пользователь, находящийся в режиме ожидания или не находящийся в режиме ожидания, не должен влиять на то, как вы обнаруживаете, что пользователь вашего приложения бездействует.