6

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

ただし、関数GetTopWindowGetNextWindow機能が欠落しているため、できません。

アップデート:

助けを求めるには少し早すぎたようです。私は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
4

0 に答える 0