2012-01-25 15 views
-1

指定されたウィンドウのサイズ(幅&の高さ)を見つける方法を探しています。これまでは、ウィンドウ/フレーム名の一部を書くだけでAutoIt関数を使用していましたが、これは私が望むように動作しています。問題はそれがMS Windowsでのみ動作することです。私はそれがクロスプラットフォーム(ウィンドウ& linux)で動作する必要があります。アプリケーションの幅と高さを見つける - クロスプラットフォーム

プラットフォームが非常に異なるため、システムがWindowsの場合は1つ、Linuxの場合は1つのスクリプトを2つ用意する必要があります。そして、私は余分なプログラム(AutoItのようなもの)に頼ることはしません。スクリプトでは、どのフレームを選択するのが「ハードコードされている」ことを望んでいません。私はAutoItのように、フレーム名またはその一部をspesefyingすることによって動作する必要があります。

+1

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

+0

@SLACKY:プログラムまたはフレームの次元はどういう意味ですか?それはあなたが興味を持っている窓ですか(ユリブが示唆したように)?または、あなたが把握したい画面の解像度ですか? – gsbabil

答えて

0

私は今、私は..私は、Linuxでこのような何かを行うことができますどのように任意のヒントを知っている必要が

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 

..私は窓でこれを行うことができる方法yuribのおかげで考え出しましたか?

関連する問題