2014-01-30 19 views
1

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

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

+1

Итак, в чем вопрос? – MSalters

+0

Есть ли простой способ отслеживать бездействие и закрыть Adobe Reader, используя либо C++, либо пакетный файл? – jsnaredude

ответ

1

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

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

0

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

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

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; 

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

Смежные вопросы