Python-Screenshot-Anwendung Fenster in jeder Größe

Ich versuche, eine vollständige screenshots von einem Fenster der Anwendung, auch wenn es minimiert, maximiert oder Fenster zu gestalten. Ich habe andere Fragen, wie diese aber noch nicht die Antwort gefunden, die ich Suche.

Ich habe versucht den folgenden code und es funktioniert, aber hat eine begrenzte Fähigkeit, mit dem, was ich will, es zu tun.

def screenshot(hwnd = None):
    left, top, right, bot = win32gui.GetWindowRect(hwnd)
    w = right - left
    h = bot - top

    hwndDC = win32gui.GetWindowDC(hwnd)
    mfcDC  = win32ui.CreateDCFromHandle(hwndDC)
    saveDC = mfcDC.CreateCompatibleDC()

    saveBitMap = win32ui.CreateBitmap()
    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)

    saveDC.SelectObject(saveBitMap)

    result = windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 0)

    bmpinfo = saveBitMap.GetInfo()
    bmpstr = saveBitMap.GetBitmapBits(True)

    im = Image.frombuffer(
        'RGB',
        (bmpinfo['bmWidth'], bmpinfo['bmHeight']),
         bmpstr, 'raw', 'BGRX', 0, 1)

    win32gui.DeleteObject(saveBitMap.GetHandle())
    saveDC.DeleteDC()
    mfcDC.DeleteDC()
    win32gui.ReleaseDC(hwnd, hwndDC)

if result == 1:
    #PrintWindow Succeeded
    im.save(r"c:\python27\programs\check.bmp")

Mithilfe dieses Codes mit einem Fenster, maximiert, ergibt ein tolles Ergebnis!Python-Screenshot-Anwendung Fenster in jeder Größe

Aber wenn das Fenster verkleinern.......nicht so viel

Python-Screenshot-Anwendung Fenster in jeder Größe

Habe ich versucht die Bearbeitung dieser Linie, aber am Ende mit einem akward Ergebnis :/. saveBitMap.CreateCompatibleBitmap(mfcDC, w+100, h+100)Python-Screenshot-Anwendung Fenster in jeder Größe

Weiß jemand, wie man einen screenshot von einem voll Fenstermodus Anwendung, ohne die Maximierung dann windowing wieder? Vielleicht etwas entlang der Linien von mit win32con.SW_MAXIMIZE.

InformationsquelleAutor Alexander | 2015-06-15
Schreibe einen Kommentar