import win32gui import win32process import psutil from .base import PlatformBase, WindowInfo class WindowsPlatform(PlatformBase): def get_active_window(self) -> WindowInfo: try: hwnd = win32gui.GetForegroundWindow() if not hwnd: return WindowInfo(title="", process_name="") # Получаем заголовок окна title = win32gui.GetWindowText(hwnd).strip() # Получаем PID процесса _, pid = win32process.GetWindowThreadProcessId(hwnd) if pid == 0: return WindowInfo(title=title, process_name="") # Получаем имя исполняемого файла процесса try: process = psutil.Process(pid) process_name = process.name() except (psutil.NoSuchProcess, psutil.AccessDenied): process_name = "" return WindowInfo(title=title, process_name=process_name) except Exception: # В случае ошибки (например, недоступно окно) — возвращаем пустые данные return WindowInfo(title="", process_name="")