Автоматическое закрытие Adobe Reader после бездействия переполнения стека

Я пытаюсь написать небольшую программу для отслеживания бездействия пользователя и примерно через 30 минут убить все запущенные приложения Adobe Reader на компьютере с Windows 7. Программное обеспечение Paychex, которое мы используем, не позволяет открывать более одной платежной квитанции одновременно, поэтому, если они не закрыты, и следующий сотрудник приходит использовать компьютер, они не могут просмотреть свою платежную квитанцию.

Может быть, это проще, используя командный файл или сценарии, но я достаточно хорошо знаю C ++, поэтому я начал с него.

1

Решение

Обнаружение, что Windows бездействует, является самой трудной частью, но к счастью у вас есть Windows 7 и вы можете использовать IIdleTrigger.

После этого достаточно отправить сообщение о закрытии окна в Adobe Reader. Ищите заголовок, который включает название платежной квитанции, чтобы вы закрыли нужный экземпляр.

1

Другие решения

Обнаружение, что Windows бездействует, является самой трудной частью

На самом деле это очень легко. Ты можешь использовать Функция GetLastInputInfo. Это фрагмент из программы, которую я создал, которая делает именно это:

unsigned idle_time;

// get idle time
LASTINPUTINFO last_input_info;
DWORD this_time;

last_input_info.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&last_input_info);
#pragma warning(suppress: 28159) // Consider using GetTickCount64() instead
this_time = GetTickCount();

idle_time = this_time - last_input_info.dwTime;

Обратите внимание, что это не на основе событий. Вы должны поместить это в цикл и использовать Спать время от времени проверять время простоя, в зависимости от того, как часто вам нужно. Из того, что вы описываете, что-то вроде каждые несколько секунд должно быть в порядке.

0