Files
TimeTracker/src/time_tracker/platform/windows.py

34 lines
1.2 KiB
Python
Raw Normal View History

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