我正在尝试列出使用Python和win32gui模块的Microsoft Windows10的所有窗口。问题是,在我的理解中,也有一些列出的进程没有窗口。
在仅打开Chrome和PyCharm的情况下运行此代码时
import win32gui
def callback(hwnd, extra):
if win32gui.IsWindowVisible(hwnd):
print(f"window text: '{win32gui.GetWindowText(hwnd)}'")
win32gui.EnumWindows(callback, None)它返回this:
window text: ''
window text: ''
window text: 'PyCharm'
window text: 'Google Chrome'
window text: 'Einstellungen'
window text: ''
window text: 'Microsoft Store'
window text: 'Microsoft Store'
window text: 'Microsoft Text Input Application'
window text: ''
window text: ''
window text: ''
window text: ''
window text: ''
window text: 'Einstellungen'
window text: ''
window text: ''
window text: ''
window text: 'Program Manager'我正在研究GetWindowLong函数,但是我找不到任何可以让我清楚地区分窗口的东西。
我真的会非常感谢你的任何想法。
发布于 2021-10-25 17:59:03
枚举窗口时,还会得到用户看不到窗口的进程。例如,如果您打开了一个chrome窗口,您将同时获得每个子进程的句柄。
来自IsWindowVisible()上的MSDN
如果指定的窗口、其父窗口、其父窗口等具有WS_VISIBLE样式,则返回值为非零。否则,返回值为零。
参考:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-iswindowvisible
根据您的用例,您有一些选项:
请参阅:http://timgolden.me.uk/pywin32-docs/win32gui__GetClientRect_meth.html (win32GUI Documentation) https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getclientrect (MSDN)
http://timgolden.me.uk/pywin32-docs/win32gui__GetWindowRect_meth.html (win32GUI文档) https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getwindowrect (MSDN)
请参阅:http://timgolden.me.uk/pywin32-docs/win32gui__GetParent_meth.html (win32GUI Documentation) https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getparent (MSDN) https://docs.microsoft.com/en-us/windows/win32/winmsg/window-styles (MSDN)
https://stackoverflow.com/questions/69712306
复制相似问题