Версия AutoIt: v3.3.8.1
Описание:
Примечания: Приведённый скрипт делает скриншот, если бездействие пользователя больше 10 сек, но мне нужно ОБРАТНОЕ, то есть, каждые 3 секунды, должна выполняться функция _ScreenCaptureEx , при условии, что бездействие системы меньше 10 сек...
Пробовал
не выходит(
Описание:
Код:
#include <Timers.au3>
#Include <file.au3>
#Include <ClipBoard.au3>
#Include <GDIPlus.au3>
$start1 = TimerInit()
While 1
If TimerDiff($start1) > 3000 And _Timer_GetIdleTime() > 10000 Then
_ScreenCaptureEx(@ScriptDir & '\'& @HOUR & '_' & @MIN & '_' & @SEC & ' [' & @MDAY & '_' & @MON &']'&'.jpg')
$start1 = TimerInit()
EndIf
WEnd
Func _ScreenCaptureEx($sFile, $bActiveWindow = False)
Local $Result, $Timer, $aOld_Clip, $iFormat, $hImage, $hBitmap
_ClipBoard_Open(0)
Dim $aOld_Clip[_ClipBoard_CountFormats()+1][2]
Do
$iFormat = _ClipBoard_EnumFormats($iFormat)
If $iFormat <> 0 Then
$aOld_Clip[0][0] += 1
$aOld_Clip[$aOld_Clip[0][0]][0] = _ClipBoard_GetData($iFormat)
$aOld_Clip[$aOld_Clip[0][0]][1] = $iFormat
EndIf
Until $iFormat = 0
_ClipBoard_Empty()
_ClipBoard_Close()
If $bActiveWindow Then
Send('!{PRINTSCREEN}')
Else
Send('{PRINTSCREEN}')
EndIf
$Timer = TimerInit()
While TimerDiff($Timer) < 1000
_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
_ClipBoard_Close()
If $hBitmap Then ExitLoop
Sleep(10)
WEnd
$hBitmap = DllCall('user32.dll', 'ptr', 'CopyImage', 'ptr', $hBitmap, 'int', 0, 'int', 0, 'int', 0, 'int', 0)
If Not @error Then $hBitmap = $hBitmap[0]
_ClipBoard_Open(0)
For $i = 1 To $aOld_Clip[0][0]
_ClipBoard_SetData($aOld_Clip[$i][0], $aOld_Clip[$i][1])
Next
_ClipBoard_Close()
If Not $hBitmap Then Return 0
If $sFile <> "" Then
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$Result = _GDIPlus_ImageSaveToFile($hImage, $sFile)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Else
$Result = $hBitmap
EndIf
Return $Result
EndFunc
Примечания: Приведённый скрипт делает скриншот, если бездействие пользователя больше 10 сек, но мне нужно ОБРАТНОЕ, то есть, каждые 3 секунды, должна выполняться функция _ScreenCaptureEx , при условии, что бездействие системы меньше 10 сек...
Пробовал
Код:
If TimerDiff($start1) > 3000 And _Timer_GetIdleTime() < 10000 Then