Всем привет!
На работе была поставлена задача отслеживать время работника в определенных программах для статистики, таких как Почта, Телеграм, Браузер и так далее.
Немного поискав в интернете информацию, я понял, что не так уж это и сложно реализовать! Возможно кому то пригодится и будет полезно!
Начнем!
По традиции расскажу про библиотеки которые понадобятся:
psutil - библиотека для получения информации о запущенных процессах, она конечно еще кое что может, но нам пока достаточно.
ctypes - из нее нам понадобится wintypes - через эту библиотеку будем получать заголовки процессов в Windows
time, datetime - думаю тут всё понятно
os - тут тоже нет смысла объяснять, через нее мы получим getlogin - имя токующего пользователя в системе
С библиотеками разобрались, начнемс писать код.
Создадим функцию mainee в ней я буду выполнять код который записывает в файл отчет о времени активности используемых программ сотрудником:
Создал функцию data_time для получения времени в формате %d.%m.%y %H:%M:%S
И создал функцию write_temp записи в файл для временного хранения отчета:
Потом как не странно переменной start я присвоил время, потом расскажу зачем я это сделал:
Получаю имя текущего пользователя в системе Windows:
Присвою переменным 0 значения, тех программ, для которых я хочу считать время активности:
Напишем цикл который будет считать время активного окна, и добавим обработчик исключений от ошибок:
В переменной pid присвается имя активного окна, точнее название процесса, например Telegram.exe
Добавим условие, в котором будем смотреть активно ли сейчас нужное нам окно или нет, и добавлять к переменным активности 1 секунду, так как цикл выполняется раз в секунду:
Если активно окно Telegram.exe, значит +1 секунда к переменной summ_tg, выполняем функцию write_temp() которая записывает во временный отчет и выводим в консоль что сейчас активен телеграм:
B все тоже самое с другими программами которые нас интересуют, в моем случае Outlook, ATOM, cisco.
В конце цикла пауза 1 секунда. time.sleep(1)
Далее срабатывает перехватчик ошибок try except, если нажать CTRL + C выпадет ошибка KeyboardInterrupt, исключим её:
Логика такая: Если мы нажали CTRL + C, то произойдет запись в основной файл отчет, через функцию mainee() , где каждая запись будет дополнятся новой:
Вот так можно посчитать время каждой программы на которое тратит человек во время пользования компьютером.
Скачать код можно по ссылке: тут из моего Telegram канала.
Ребята, кто в курсе, посоветуйте хорошую клавиатуру с маркета, я выбирал тут, может кто брал что себе или кому то нравится своя, в общем нужен совет.
Всем спасибо за внимание, надеюсь статья была полезной, всем пока!