Domanda

Non è così dannoso come sembra, voglio ottenere le dimensioni attuali delle loro finestre, non guardare cosa c'è dentro. Lo scopo è capire che se ogni altra finestra è a schermo intero, dovrei avviarla anch'io. O se tutti gli altri processi sono solo 800x600 nonostante ci sia una risoluzione enorme, questo è probabilmente ciò che l'utente desidera. Perché farli perdere tempo ed energia ridimensionando la mia finestra per abbinare tutti gli altri che hanno? Sono principalmente un devoloper di Windows ma non mi turberebbe minimamente se ci fosse un modo multipiattaforma per farlo.

È stato utile?

Soluzione

Uso dei suggerimenti di articolo di WindowMover e Post del blog di Nattee Niparnan Sono riuscito a creare questo:

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

È necessario il Estensioni Win32 per il modulo Python per funzionare.

EDIT: ho scoperto che GetWindowRect fornisce risultati più corretti di GetClientRect . La fonte è stata aggiornata.

Altri suggerimenti

Sono un grande fan di AutoIt . Hanno una versione COM che ti consente di utilizzare la maggior parte delle loro funzioni da Python.

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

Dai un'occhiata al win32gui in in le estensioni di Windows per Python. Potrebbe fornire alcune delle funzionalità che stai cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top