如何获得每个打开窗口的名称列表?

2024-09-30 14:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获取所有打开窗口的名称/文本列表?在

我试过pywinauto:

pywinauto.findwindows.find_windows(title_re="*") 但是使用*作为正则表达式会引发错误

我试过win32gui: 它有

win32gui.GetWindowText(win32gui.GetForegroundWindow())

但在它的文档中,我找不到一个getAllWindows或返回打开的hwnd句柄的所有名称/文本的东西: http://timgolden.me.uk/pywin32-docs/contents.html


Tags: 文档文本re名称列表titlewindows错误
2条回答

您可以将^{}^{}一起使用:

import win32gui

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

win32gui.EnumWindows( winEnumHandler, None )

输出:

^{pr2}$

如果您想使用pywinauto,它会更简单:

from pywinauto import Desktop

windows = Desktop(backend="uia").windows()
print([w.window_text() for w in windows])

这甚至对WPF应用程序也可以。使用win32gui.EnumWindows无法访问WPF或UWP应用程序的文本。pywinauto在Desktop(backend="win32")中使用win32gui.EnumWindowsbackend="uia"使用来自{}的更新的API。在

关于pywinauto中后端的更多详细信息可以在Getting Started Guide中找到。在

相关问题 更多 >