2012-01-25 3 views
-1

지정된 창 크기 (너비 & 높이)를 찾는 방법을 찾고 있습니다. 지금까지는 창/프레임 이름의 일부만 작성하여 AutoIt 기능을 사용하고 있으며 원하는대로 작동합니다. 문제는 MS Windows에서만 작동한다는 것입니다. 나는 그것이 crossplatform (창문 & 리눅스)을 작동해야합니다.응용 프로그램 너비와 높이 찾기 - Crossplatform

플랫폼이 매우 다르므로 두 개의 스크립트 (시스템이 Windows 인 경우 1 개, Linux의 경우 1 개)가 필요합니다. AutoIt과 같은 추가 프로그램에 의존하고 싶지 않습니다. 스크립트에서 어떤 프레임을 선택 하느냐가 "하드 코딩"되지 않기를 바란다. 필자는 AutoIt처럼 프레임 이름/부분을 spesefying하여 작업 할 필요가 있습니다. 내가 Windows에서 yurib 감사는이 작업을 수행 할 수있는 방법을 알아 냈

+1

http://stackoverflow.com/questions/151846/get-other-running-processes-window-sizes-in-python – yurib

+0

@SLACKY : 프로그램 또는 프레임 차원이란 무엇입니까? 그것은 당신이 (yurib 제안으로) 관심있는 창입니까? 또는 알아야 할 화면 해상도입니까? – gsbabil

답변

0

..

import win32con 
import win32gui 

def inText(haystack, needle, n): 
    parts= haystack.split(needle, n+1) 
    if len(parts)<=n+1: 
     return False 
    if len(haystack)-len(parts[-1])-len(needle): 
     return True 

def isRealWindow(hWnd): 
    '''Return True if given window is a real Windows application window.''' 
    if not win32gui.IsWindowVisible(hWnd): 
     return False 
    if win32gui.GetParent(hWnd) != 0: 
     return False 
    hasNoOwner = win32gui.GetWindow(hWnd, win32con.GW_OWNER) == 0 
    lExStyle = win32gui.GetWindowLong(hWnd, win32con.GWL_EXSTYLE) 
    if (((lExStyle & win32con.WS_EX_TOOLWINDOW) == 0 and hasNoOwner) 
     or ((lExStyle & win32con.WS_EX_APPWINDOW != 0) and not hasNoOwner)): 
     if win32gui.GetWindowText(hWnd): 
      return True 
    return False 

def getWindowSizes(text): 
    '''Return a list of tuples (handler, (width, height)) for each real window.''' 
    def callback(hWnd, extra): 
     if not isRealWindow(hWnd): 
      return 
     title = win32gui.GetWindowText(hWnd) 
     rect = win32gui.GetWindowRect(hWnd) 
     isFrame = inText(title, text, 0) 
     if(isFrame): 
      windows.append((title, rect[2] - rect[0], rect[3] - rect[1], rect[0],rect[1])) 
    windows = [] 
    win32gui.EnumWindows(callback, windows) 
    return windows 

def findWindow(text): 
    window = getWindowSizes(text) 
    name = window[0][0] 
    w = window[0][1] 
    h = window[0][2] 
    x = window[0][3] 
    y = window[0][4] 

    return name,w,h,x,y 

이제 내가 리눅스에서이 .. 어떤 힌트를 같이 할 수있는 방법을 알 필요가

?