2016-07-29 3 views
0

사용자가 볼 수있는 창을 표시하기 위해 바탕 화면에서 열려있는 순서 창을 찾는 방법을 찾고 있습니다.Python win32api가 "스택"창을 얻습니다.

최대화 된 크롬 창, 최대화 된 메모장 ++ 창, 그리고 화면의 작은 부분 만 덮는 명령 프롬프트를 차례로 열어 보겠습니다. win32api (또는 다른 라이브러리)를 사용하여 창 스택을 열어서 창 크기를 가져와 표시되는 것을 찾을 수있는 방법이 있습니까? 나는 이미 어떤 창에 포커스와 최상위 창을 가져 오는지를 알고 있지만 그보다 더 많은 정보를 찾고 있습니다.

위의 예에서 전체 명령 프롬프트가 표시되지만 장소가 아닌 경우 notepad ++ 창이 예를 들어 표시됩니다. 크롬 창 부분은 보이지 않습니다.

답변

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를 정보에 좋은 artice있다