Обнаружить существующее незанятое приложение

У меня есть проблема, и мне нужен подход к следующей проблеме:

Допустим, есть приложение "А". Это приложение "А" можно использовать только при наличии лицензии. Есть несколько пользователей, которые используют это приложение и "резервируют" лицензию для них, если лицензия свободна. Но иногда пользователь, "зарезервировавший" лицензию, забывает "незарезервированный".

Основной вопрос: как я могу определить, что пользователь не использует приложение в течение X минут (приложение находится в состоянии ожидания)? Это не означает, что пользователь не активен на компьютере - он использует другие приложения на компьютере, но он не использует это конкретное приложение "А". (Пользователь должен войти в систему, чтобы он мог использовать лицензию. Это означает, что даже если он выходит из приложения, сворачивает приложение или просто приложение находится в фоновом режиме других приложений, он все еще представляет лицензию)

Я читал о GetLastInputInfo, но я не верю, что это поможет мне в моей ситуации. Все, что я хочу, это получить информацию, если пользователь взаимодействует с приложением.

Я использую C++. ОС: Windows 10 x64bit.

1 ответ

Как насчет того, чтобы ваше приложение перехватывало входную очередь и фильтровало сообщения, которые, по вашему мнению, применимы к используемому приложению (вероятно, keyup/down/mousemove, вероятно, не WM_TIMER или WM_PAINT), а затем, когда вы решите, что прошло достаточно много времени с тех пор, как вы получили одно из эти сообщения (установите таймер каждый раз, когда одно из выбранных сообщений было получено), это когда вы отпускаете лицензионный ключ.

Другие вопросы по тегам