Python Windows Extensionsを使用してウィンドウの z オーダーを取得する方法はありますか? または、代わりに、別のモジュールを使用してこれを行う方法はありますか? これを行う通常の方法は と を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