【发布时间】:2022-01-07 09:13:39
【问题描述】:
我想获取特定进程(例如 Spotify.exe)的 Windowtitle。
def winEnumHandler( hwnd, ctx ):
if win32gui.IsWindowVisible( hwnd ):
print (hex(hwnd), win32gui.GetWindowText( hwnd ))
我尝试了在 Internet 上找到的多个不同版本,但大多数解决方案都针对活动窗口,但在我的情况下,它始终是活动窗口,所以我必须按进程名称或进程 ID。
所以,基本上我正在寻找这样的东西
title = getTitleFromProcessName('Spotify.exe')
然后title就是spotify窗口对应的窗口标题。
【问题讨论】:
-
进程没有名字。如果要枚举给定特定进程 ID 的进程拥有的窗口,您将如何确定进程 ID?无论如何,如果你想过滤进程 ID,你可以在你的枚举回调中调用
GetWindowThreadProcessId。 -
您可以使用
GetAncestor获取所有顶级窗口的列表,并使用GetWindowThreadProcessId查看这些窗口的PID。它不是很可靠,但它确实有效。我想我已经回答了同样的问题,但我找不到答案。 -
@vii 您不能用
GetAncestor枚举所有顶级窗口。您使用 OP 已经在使用的EnumWindows枚举所有顶级窗口。 -
@IInspectable,是的,我的错误。使用
EnumWindows枚举并使用GetAncestor检查窗口是否位于顶层。 -
@vii
EnumWindows仅枚举顶级窗口。您不必检查它是否是顶级窗口。
标签: python windows winapi window