import win32gui, win32process, psutil, ctypes

user32 = ctypes.windll.user32
hdesk = user32.OpenInputDesktop(0, False, 0x01FF)
if hdesk: user32.SetThreadDesktop(hdesk)

with open(r"c:\Projects\JX\logs\all_top_windows.log", "w", encoding="utf-8") as f:
    def cb(h, _):
        _, pid = win32process.GetWindowThreadProcessId(h)
        try:
            pname = psutil.Process(pid).name()
        except Exception:
            pname = "Unknown"
        txt = win32gui.GetWindowText(h)
        cls = win32gui.GetClassName(h)
        vis = win32gui.IsWindowVisible(h)
        rect = win32gui.GetWindowRect(h)
        if any(k in pname.lower() for k in ["autoupdate", "vggame", "game", "vctk"]):
            f.write(f"HWND: 0x{h:08X} ({h}) | PID: {pid} ({pname}) | Class: {cls} | Vis: {vis} | Rect: {rect} | Title: '{txt}'\n")

    win32gui.EnumWindows(cb, None)
