Я пытаюсь получить скриншоты из окна приложения даже в случае минимизации, максимизации или любой формы окна. Я просмотрел другие вопросы, такие как this, но не нашел ответа, который я ищу.Окно приложения для скриншотов Python любого размера
Я пробовал код ниже, и он работает, но имеет ограниченные возможности с тем, что я хочу, чтобы он делал.
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")
Использование этого кода с максимально увеличивающимся окном дает отличный результат!
Но когда окно усаживается ....... не так много
Я пытался редактировать эту строку, но в конечном итоге с akward результат: /. saveBitMap.CreateCompatibleBitmap(mfcDC, w+100, h+100)
Кто-нибудь знает, как сделать снимок экрана полностью оконного приложения без максимизации, а затем снова окончить? Возможно, что-то похожее на использование win32con.SW_MAXIMIZE
.
Спасибо, что ответили! Хотя pywinauto FANTASTIC и способен сделать так много, этот метод является всего лишь оберткой для Imagegrab из PIL, которая просто берет захват экрана. Блокнот должен быть передним на экране. Я хочу посмотреть, возможно ли это, если это можно свести к минимуму или изменить размер и все еще иметь возможность фиксировать все, что происходит в графическом интерфейсе. Это не то, что отличается от использования 'от PIL импорта ImageGrab ImageGrab.grab ((100100200200)). Шоу()' Reference [CaptureAsImage] (https://code.google.com/p/pywinauto/source /browse/pywinauto/controls/HwndWrapper.py?name=0.4.1) – Alexander