Найти тему
Свой Айтишник

Python. Получаем текущее активное окно в Windows и считаем время активного окна.

Всем привет!

На работе была поставлена задача отслеживать время работника в определенных программах для статистики, таких как Почта, Телеграм, Браузер и так далее.

Немного поискав в интернете информацию, я понял, что не так уж это и сложно реализовать! Возможно кому то пригодится и будет полезно!

Начнем!

По традиции расскажу про библиотеки которые понадобятся:

psutil - библиотека для получения информации о запущенных процессах, она конечно еще кое что может, но нам пока достаточно.

ctypes - из нее нам понадобится wintypes - через эту библиотеку будем получать заголовки процессов в Windows

time, datetime - думаю тут всё понятно

os - тут тоже нет смысла объяснять, через нее мы получим getlogin - имя токующего пользователя в системе

С библиотеками разобрались, начнемс писать код.

Создадим функцию mainee в ней я буду выполнять код который записывает в файл отчет о времени активности используемых программ сотрудником:

Код уместился не полностью в длину, но суть ясна
Код уместился не полностью в длину, но суть ясна

Создал функцию data_time для получения времени в формате %d.%m.%y %H:%M:%S

-2

И создал функцию write_temp записи в файл для временного хранения отчета:

тоже вся функция не уместилась, думаю суть ясна
тоже вся функция не уместилась, думаю суть ясна

Потом как не странно переменной start я присвоил время, потом расскажу зачем я это сделал:

-4

Получаю имя текущего пользователя в системе Windows:

-5

Присвою переменным 0 значения, тех программ, для которых я хочу считать время активности:

-6

Напишем цикл который будет считать время активного окна, и добавим обработчик исключений от ошибок:

-7

В переменной pid присвается имя активного окна, точнее название процесса, например Telegram.exe

Добавим условие, в котором будем смотреть активно ли сейчас нужное нам окно или нет, и добавлять к переменным активности 1 секунду, так как цикл выполняется раз в секунду:

-8

Если активно окно Telegram.exe, значит +1 секунда к переменной summ_tg, выполняем функцию write_temp() которая записывает во временный отчет и выводим в консоль что сейчас активен телеграм:

-9
-10

B все тоже самое с другими программами которые нас интересуют, в моем случае Outlook, ATOM, cisco.

В конце цикла пауза 1 секунда. time.sleep(1)

Далее срабатывает перехватчик ошибок try except, если нажать CTRL + C выпадет ошибка KeyboardInterrupt, исключим её:

-11

Логика такая: Если мы нажали CTRL + C, то произойдет запись в основной файл отчет, через функцию mainee() , где каждая запись будет дополнятся новой:

-12

Вот так можно посчитать время каждой программы на которое тратит человек во время пользования компьютером.

Скачать код можно по ссылке: тут из моего Telegram канала.

Ребята, кто в курсе, посоветуйте хорошую клавиатуру с маркета, я выбирал тут, может кто брал что себе или кому то нравится своя, в общем нужен совет.

Всем спасибо за внимание, надеюсь статья была полезной, всем пока!