我一直致力于从EnumWindows中筛选出窗口,只包括最小化或打开列表的窗口
代码
def winEnumHandler(hwnd, ctx):
title = win32gui.GetWindowText(hwnd)
# Append HWND to list
if win32gui.IsWindowVisible(hwnd) and title != '':
app = ApplicationWindow(hwnd, title)
applications.append(app)
def scanApplication():
applications.clear()
win32gui.EnumWindows(winEnumHandler, None)
return applications
预期/实际
这段代码的问题是它没有正确地过滤掉通过EnumWindows
找到的一些窗口。例如,目前我的计算机上打开了:Chrome、IDE和Discord,并且只希望这些窗口出现在应用程序列表中。然而,我不仅得到了那些窗口,还得到了后台任务,比如:计算器、邮件、Geforce叠加等等。。。这些后台任务处于活动状态,但桌面上没有窗口,这些任务也没有最小化。我怎样才能从EnumWindows
中筛选出后台任务?谢谢你的阅读
在对DWM做了更多的研究之后,DWM提供了一种方法,您可以查找windows的属性,从中获得更多信息。其中一个选项称为“斗篷”,它在过滤所有窗口中的后台进程方面做得非常好。我的代码如下。我还将链接更多关于DWMA的stackoverflow帖子
DWM筛选:Here
下面是该链接的更多内容,此最终解决方案显示了所有真实窗口:
任何简化请让我知道!谢谢
相关问题 更多 >
编程相关推荐