使用Python Windows Extensions获取Window Z-Order

时间:2011-06-17 04:02:11

标签: python winapi pywin32 z-order

有没有办法使用Python Windows Extensions获取Windows的z顺序?或者,有没有办法使用另一个模块执行此操作?通常的方法是使用GetTopWindowGetNextWindow,但这两个函数都不会出现在win32gui模块中。

目前我正在这样做,但它没有考虑到Windows的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

0 个答案:

没有答案