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!
Aber wenn das Fenster verkleinern.......nicht so viel
Habe ich versucht die Bearbeitung dieser Linie, aber am Ende mit einem akward Ergebnis :/. saveBitMap.CreateCompatibleBitmap(mfcDC, w+100, h+100)
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
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht pywinauto + Kissen /PIL?
from PIL import ImageGrab ImageGrab.grab((100,100,200,200)).show()
Verweis CaptureAsImage