Столкнулся с задачей получения имени процесса по идентификатору активного окна в среде Windows.
Задача довольно не тривиальная и пришлось немного помучиться, в итоге нашел прекрасный модуль psutil, позволяющий получить информацию обо всех запущенных процессах и использования ресурсов системы ( процессор, память ), модуль написан на Си и работает на Linux, Windows, OSX, FreeBSD как на 32-bit так и на 64-bit с вериями Python от 2.4 до 3.2, что является большим плюсом.
В итоге, использовав данный модуль весь код свелся к нескольким строкам.
import win32gui import win32process import psutil def get_process_name(): # получаем id активного окна hdlr = win32gui.GetForegroundWindow() # получаем id процесса с помощью id окна pid = win32process.GetWindowThreadProcessId(hdlr) # получаем список всех активных процессов с помощью модуля psutil processes = psutil.get_pid_list() # ищем наш процесс for p in processes: if p == pid[1]: # нашли его, получаем этот процесс и возвращаем его имя process = psutil.Process(p) return process.name
Вот в общем и все, получилось довольно кратко и главное эффективно.
Чтобы получить тот же результат в Linux, OSX, FreeBSD необходимо получить id процесса, для этого можно использовать этот инструмент xdotool.
Комментариев нет:
Отправить комментарий