Frage

Das ist nicht so schädlich ist, wie es klingt, möchte ich die aktuelle Größe der Fenster bekommen, um nicht zu sehen, was in ihnen ist. Der Zweck ist es, herauszufinden, dass, wenn alle anderen Fenster Vollbild wird dann sollte ich auch so starten. Oder, wenn alle anderen Prozesse sind nur 800x600 obwohl es eine große Auflösung ist, dann ist das wahrscheinlich das, was die Nutzer wollen. Warum machen sie meine Fenster verschwenden Zeit und Energie Ändern der Größe alle anderen passen sie haben? Ich bin in erster Linie ein Windows-devoloper aber es würde mich nicht im geringsten aufgeregt, wenn es ein Cross-Plattform-Weg ist, dies zu tun.

War es hilfreich?

Lösung

Hinweise von WindowMover Artikel und Nattee Niparnan Blog-Post ich dies zu schaffen verwaltet:

import win32con
import win32gui

def isRealWindow(hWnd):
    '''Return True iff 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():
    '''
    Return a list of tuples (handler, (width, height)) for each real window.
    '''
    def callback(hWnd, windows):
        if not isRealWindow(hWnd):
            return
        rect = win32gui.GetWindowRect(hWnd)
        windows.append((hWnd, (rect[2] - rect[0], rect[3] - rect[1])))
    windows = []
    win32gui.EnumWindows(callback, windows)
    return windows

for win in getWindowSizes():
    print win

Sie müssen die Win32-Erweiterungen für Python-Modul für diese arbeiten.

EDIT: Ich entdeckte, dass GetWindowRect richtigere Ergebnisse als GetClientRect gibt. Quelle wurde aktualisiert.

Andere Tipps

Ich bin ein großer Fan von AutoIt . Sie haben eine COM-Version, die Sie die meisten ihrer Funktionen von Python verwenden.

import win32com.client
oAutoItX = win32com.client.Dispatch( "AutoItX3.Control" )

oAutoItX.Opt("WinTitleMatchMode", 2) #Match text anywhere in a window title

width = oAutoItX.WinGetClientSizeWidth("Firefox")
height = oAutoItX.WinGetClientSizeHeight("Firefox")

print width, height

Schauen Sie sich die win32gui Modul in den Windows-Erweiterungen für Python. Es kann einen Teil der Funktionalität bieten Sie suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top