Что нового

Скриншот определенной области окна

yl3d

Новичок
Сообщения
70
Репутация
0
Доброе утро, программисты.
Помогите разобраться с непростым вопросом.

Нашел на сайте скрипт, который делает скриншот программы - нажатием на клавишу W.

Подскажите - как заставить этот скрипт сделать не полностью скриншот содержимого окна, а только области с размерами 110х120 (с координатами от нижнего правого угла - (150;200)) ?
Код:
#include <GdiPlus.au3>
#include <WindowsConstants.au3>

Opt("TrayAutoPause", 0)
Opt("WinTitleMatchMode", -2)

HotKeySet("{ESC}", "_Exit")
HotKeySet("w", "_Screen")
HotKeySet("ц", "_Screen")

While 1
    Sleep(10)
WEnd

Func _Screen()
    Local $hWnd = WinGetHandle("Paint")
    If Not $hWnd Then Return TrayTip("Screen", "Окно не существует", 10, 3)
    Local Static $i
    Local $iW = WinGetClientSize($hWnd)[0], $iH = WinGetClientSize($hWnd)[1], $hDC, $hMemDC, $hHBitmap, $hObj, $hBitmap
    $hDC = _WinAPI_GetDC($hWnd)
    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
    $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
    $hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)
    _WinAPI_BitBlt($hMemDC, 0, 0, $iW, $iH, $hDC, 0, 0, $SRCCOPY)
    _WinAPI_SelectObject($hMemDC, $hObj)
    _WinAPI_DeleteDC($hMemDC)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _GDIPlus_Startup()
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
    _WinAPI_DeleteObject($hHBitmap)
    $i += 1
    _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Screen-" & $i & ".jpg")
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_Shutdown()
EndFunc   ;==>_Screen

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 

Вложения

  • 1.png
    1.png
    80.8 КБ · Просмотры: 10
  • 1.au3
    1.2 КБ · Просмотры: 4

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
Код:
...
    $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, 120, 110) ; <= изменить
    $hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)
    _WinAPI_BitBlt($hMemDC, 0, 0, 120, 110, $hDC, $iW - 150 - 120, $iH - 200 - 110, $SRCCOPY) ; <= изменить
...
 
Верх