How to get a list of the name of every open window?

user10385242 picture user10385242 · Apr 6, 2019 · Viewed 11.8k times · Source

How do I get a list of the name/text of all opened windows?

I tried pywinauto:

pywinauto.findwindows.find_windows(title_re="*") but using * as a regex raises an error

I tried win32gui: It has

win32gui.GetWindowText(win32gui.GetForegroundWindow())

But in its docs I couldn't find a getAllWindows or something that returns all names/texts of open hwnd handles: http://timgolden.me.uk/pywin32-docs/contents.html

Answer

Pedro Lobito picture Pedro Lobito · Apr 6, 2019

You can use win32gui.GetWindowText( hwnd ) along with win32gui.EnumWindows:

import win32gui

def winEnumHandler( hwnd, ctx ):
    if win32gui.IsWindowVisible( hwnd ):
        print (hex(hwnd), win32gui.GetWindowText( hwnd ))

win32gui.EnumWindows( winEnumHandler, None )

Output:

0x20fa4 bet - [C:\Users\X\Desktop\] - [bet] - L:\stack\stack_enum_windows.py - IntelliJ IDEA 2017.2.5
0x1932478 13. vnc 888
0x30c27b8 Telegram (55)
0x40aba MobaXterm
0x10a0a IntelliJIDEALicenseServer_windows_amd64.exe - Shortcut
...