Что нового

Создание пронумерованных скриншотов окна

OlegSmirnov

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

Имеется скрипт, который по нажатию горячей клавиши "W" - делает скриншот окна определенной программы.
Однако скрипт - не накапливает эти скриншоты, а перезаписывает один и тот же - под именем Screen.jpg

Подскажите - как изменить скрипт, чтобы он всякий раз - создавал новый пронумерованный скриншот ( Screen-1.jpg, Screen-2.jpg, Screen-3.jpg и т.д.) ?

Код:
#include <ScreenCapture.au3>
#include <WindowsConstants.au3>
Opt("TrayAutoPause", 0)
Opt("WinTitleMatchMode", -2)
HotKeySet("{ESC}", "_Exit")
HotKeySet("w", "_Screen")
HotKeySet("ц", "_Screen")
OnAutoItExitRegister("_OnExit")
_GDIPlus_Startup()

While 1
    Sleep(10)
WEnd

Func _Screen()
    Local $hWnd = WinGetHandle("Fceux 2")
    If $hWnd Then
        Local $iW = _WinAPI_GetWindowWidth($hWnd), $iH = _WinAPI_GetWindowHeight($hWnd), $hDC, $hMemDC, $hHBitmap, $hObj, $hBitmap

        $hDC = _WinAPI_GetWindowDC($hWnd)
        $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
        $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
        $hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)

        _WinAPI_PrintWindow($hWnd, $hMemDC)

        _WinAPI_SelectObject($hMemDC, $hObj)
        _WinAPI_DeleteDC($hMemDC)
        _WinAPI_ReleaseDC($hWnd, $hDC)

        $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
        _WinAPI_DeleteObject($hHBitmap)

        _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Screen.jpg")

        _GDIPlus_BitmapDispose($hBitmap)
    Else
        TrayTip("Screen", "Окно не существует", 10, 3)
    EndIf
EndFunc   ;==>_Screen

Func _OnExit()
    _GDIPlus_Shutdown()
EndFunc   ;==>_OnExit

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 

InnI

AutoIT Гуру
Сообщения
4,949
Репутация
1,443
Код:
...
Func _Screen()
    Local Static $i ; <= добавить
...
        $i += 1 ; <= добавить
        _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Screen-" & $i & ".jpg") ; <= изменить
...
 
Автор
O

OlegSmirnov

Новичок
Сообщения
52
Репутация
0
InnI , понял.
Теперь все заработало. Большое спасибо.
 
Верх