У меня есть проблема, и мне нужен подход к следующей проблеме:
Допустим, есть приложение «А». Это приложение «А» можно использовать только при наличии лицензии. Есть несколько пользователей, которые используют это приложение и «резервируют» лицензию для них, если лицензия свободна. Но иногда пользователь, «зарезервировавший» лицензию, забывает «незарезервированный».
Основной вопрос: Как определить, что пользователь не использует приложение в течение X минут (приложение находится в состоянии ожидания)?
Это не означает, что пользователь не активен на компьютере — он использует другие приложения на компьютере, но он не использует это конкретное приложение «А». (Пользователь должен войти в систему, чтобы он мог использовать лицензию. Это означает, что даже если он выходит из приложения, сворачивает приложение или просто приложение находится в фоновом режиме других приложений, он все еще представляет лицензию)
Я читал о GetLastInputInfo, но я не верю, что это поможет мне в моей ситуации. Все, что я хочу, это получить информацию, если пользователь взаимодействует с приложением.
Я использую C ++.
ОС: Windows 10 x64bit.
Как насчет того, чтобы ваше приложение перехватывало входную очередь и фильтровало сообщения, которые, по вашему мнению, применимы к используемому приложению (вероятно, keyup / down / mousemove, вероятно, не WM_TIMER или WM_PAINT), а затем, когда вы решите, что прошло достаточно много времени с тех пор, как вы получили одно из эти сообщения (установите таймер каждый раз, когда одно из выбранных сообщений было получено), это когда вы отпускаете лицензионный ключ.
Других решений пока нет …