有没有办法使用Python Windows Extensions获取窗口的 z 顺序?或者,有没有办法使用另一个模块来做到这一点?执行此操作的常用方法是使用GetTopWindow
and GetNextWindow
,但这些函数都没有出现在win32gui
模块中。
目前我正在这样做,但它没有考虑到窗口的 z 顺序:
import win32gui
def get_windows():
def callback(hwnd, lst):
lst.append(hwnd)
lst = []
win32gui.EnumWindows(callback, lst)
return lst
理想情况下,我想要这样的东西:(这不起作用)
import win32gui
import win32con
def get_windows():
'''Returns windows in z-order (top first)'''
lst = []
top = win32gui.GetTopWindow()
if top is None: return lst
lst.append(top)
while True:
next = win32gui.GetNextWindow(lst[-1], win32con.GW_HWNDNEXT)
if next is None: break
lst.append(next)
return lst
但是,缺少GetTopWindow
andGetNextWindow
函数,所以我不能。
更新:
我想我请求帮助有点太快了。我用ctypes弄清楚了。希望其他人觉得这很有帮助。
import win32con
import ctypes
def get_windows():
'''Returns windows in z-order (top first)'''
user32 = ctypes.windll.user32
lst = []
top = user32.GetTopWindow(None)
if not top:
return lst
lst.append(top)
while True:
next = user32.GetWindow(lst[-1], win32con.GW_HWNDNEXT)
if not next:
break
lst.append(next)
return lst