Что нового

Скриншот окна каждые 5 секунд

OlegSmirnov

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

Имеется скрипт, который по нажатию клавиши "W" - создает пронумерованный скриншот определенной программы.
Код:
#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
Как заставить скрипт делать скриншот не по нажатию клавиши, а автоматически - каждые 5 секунд ?
 

gunter123

Продвинутый
Сообщения
159
Репутация
69
Код:
...
While 1
    Sleep(5000)   ; Заменить
    _Screen()     ; Добавить
WEnd
...
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Проще (и наверное правильнее ) просто добавьте в начало кода строку :
Код:
AdlibRegister ( "_Screen" ,5000 )

Функция "_Screen" будет вызываться каждые 5 сек., при этом в паузах возможно выполнять любые другие действия.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
OffTopic:
И да. Про вариант между While Sleep Wend вставить вызов функции, думаю, можно было бы и самому догадаться...
 
Верх