2016-07-29 322 views
0

我正在尋找一種方式的「堆棧」,找出什麼樣的順序窗戶是我的桌面上打開,以告知什麼什麼窗口是對用戶可見的部分。的Python的Win32 API獲取Windows

就是說,爲了,我打開最大化鉻窗口,最大化的記事本++窗口,然後一個命令提示,只覆蓋屏幕的一小部分。是否有使用WIN32API(或其他可能的庫),可以告訴我窗口的堆棧開放,使我可以把窗戶的尺寸,並找出哪些是可見的一種方式?我已經知道怎麼去哪個窗口具有焦點和頂層窗口,但我正在尋找比這更多的信息。

在我上面提到的例子中,我會返回一個完整的命令提示符是可見的,但在地方它是沒有的,記事本+ +窗口例如可見。鉻窗口的任何部分都不可見。

回答

0

這還沒有任何邏輯決定是否窗戶被覆蓋,但它確實返回現有窗口的字典,他們的頭銜,可見,最小化,規模信息,並在下一個窗口句柄。

import win32gui 
import win32con 


def enum_handler(hwnd, results): 
    results[hwnd] = { 
     "title":win32gui.GetWindowText(hwnd), 
     "visible":win32gui.IsWindowVisible(hwnd), 
     "minimized":win32gui.IsIconic(hwnd), 
     "rectangle":win32gui.GetWindowRect(hwnd), #(left, top, right, bottom) 
     "next":win32gui.GetWindow(hwnd, win32con.GW_HWNDNEXT) # Window handle to below window 
    } 


def get_windows(): 
    enumerated_windows = {} 
    win32gui.EnumWindows(enum_handler, enumerated_windows) 
    return enumerated_windows 


if __name__ == "__main__": 
    windows = get_windows() 

    for window_handle in windows: 
     if windows[window_handle]["title"] is not "": 
      print "{}, {}, {}, {}".format(windows[window_handle]["minimized"], 
              windows[window_handle]["rectangle"], 
              windows[window_handle]["next"], 
              windows[window_handle]["title"]) 

微軟MSDN具有良好的條每頁上GetWindow()和GW_HWNDNEXT https://msdn.microsoft.com/en-us/library/windows/desktop/ms633515(v=vs.85).aspx

ZORDER信息