Есть ли способ получить z-порядок окон, используя Python Windows Extensions ?Или, альтернативно, есть ли способ сделать это с помощью другого модуля?Обычный способ сделать это с помощью GetTopWindow
и 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
и GetNextWindow
отсутствуют, поэтому я не могу.
ОБНОВЛЕНИЕ:
Полагаю, я был слишком быстр, чтобы попросить о помощи.Я понял это с помощью 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