Найти название активного окна при помощи python

Подскажите как можно найти название приложения, которое является активным в данный момент. Я нашел много примеров как это делают через win32gui

from win32gui import GetWindowText, GetForegroundWindow
print(GetWindowText(GetForegroundWindow()))

Проблема в том что в этом случае возвращается название окна, к примеру у меня запущен pycharm, но название у окна test - test.py и так же с браузерами и т.д.

Нашел еще один пример, но он возвращает id приложения, но все так же не смог найти как из id найти название самого приложения.

import ctypes
from ctypes import wintypes

pid = wintypes.DWORD()
active = ctypes.windll.user32.GetForegroundWindow()
active_window = ctypes.windll.user32.GetWindowThreadProcessId(active,ctypes.byref(pid))

Подскажите как определить название приложение которое сейчас активно ?


Ответы (1 шт):

Автор решения: L4legenda

Вот пример как решил данный вопрос

import psutil
import ctypes
from ctypes import wintypes

pid = wintypes.DWORD()
active = ctypes.windll.user32.GetForegroundWindow()
active_window = ctypes.windll.user32.GetWindowThreadProcessId(active, ctypes.byref(pid))

pid = pid.value
for item in psutil.process_iter():
    if pid == item.pid:
        print(item.name())
→ Ссылка