Войти

Показать полную графическую версию : Как задать время выполнения функции?


Centrinar
20-07-2010, 16:49
Наверное глупый вопрос но в справек не нашел, как задать время для функции с while. т.е. есть функция которая постоянно повторяеться, как задать что бы она работала например 2 сек.

Creat0R
20-07-2010, 16:55
как задать время для функции с while. т.е. есть функция которая постоянно повторяеться, как задать что бы она работала например 2 сек »
Проверять в цикле таймер (TimerInit/TimerDiff):

Loop()

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) Loop()
$iTimer = TimerInit (http://www.autoitscript.com/autoit3/docs/functions/TimerInit.htm)()

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
....

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) TimerDiff (http://www.autoitscript.com/autoit3/docs/functions/TimerDiff.htm)($iTimer) >= 2000 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
ExitLoop (http://www.autoitscript.com/autoit3/docs/keywords.htm#ExitLoop)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)

....
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Centrinar
20-07-2010, 17:01
Creat0R помоги пожалуйста реализовать этот тут, надо что бы GIF картинка крутилась 2 сек.


GUICreate("Embedded Web control Test", 640, 580)

_GUICtrlCreateGif(@SystemDir & "\oobe\html\mouse\images\clicking.gif", 5, 5)
_GUICtrlCreateGif(@WindowsDir & "\pchealth\helpctr\System\images\progbar.gif", 450, 5)
_GUICtrlCreateGif(@SystemDir & "\oobe\images\dialup.gif", 5, 300)

GUISetState()

While GUIGetMsg() <> -3
WEnd

Func _GUICtrlCreateGif($sGifFile, $iLeft, $iTop, $iWidth=-1, $iHeight=-1)
Local $iSizes, $oIE, $nGUIActiveX

If ($iWidth = -1 Or $iHeight = -1) And FileGetSize($sGifFile) > 9 Then
$iSizes = FileRead($sGifFile, 10)

If $iWidth = -1 Then $iWidth = Asc(StringMid($iSizes, 8, 1)) * 256 + Asc(StringMid($iSizes, 7, 1))
If $iHeight = -1 Then $iHeight = Asc(StringMid($iSizes, 10, 1)) * 256 + Asc(StringMid($iSizes, 9, 1))
EndIf

$oIE = ObjCreate("Shell.Explorer.2")
$nGUIActiveX = GUICtrlCreateObj($oIE, $iLeft, $iTop, $iWidth, $iHeight)
$oIE.Navigate("about:blank")

While $oIE.Busy
Sleep(1)
WEnd

$oIE.Document.Body.Background = $sGifFile
$oIE.Document.Body.Scroll = "No"

Return $nGUIActiveX
EndFunc

Creat0R
20-07-2010, 17:12
надо что бы GIF картинка крутилась 2 сек »
Тут можно только удалять Gif'ки...

GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("Embedded Web control Test", 640, 580)

$nGif1 = _GUICtrlCreateGif(@SystemDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@systemdir) & "\oobe\html\mouse\images\clicking.gif", 5, 5, -1, -1)
$nGif2 = _GUICtrlCreateGif(@WindowsDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@windowsdir) & "\pchealth\helpctr\System\images\progbar.gif", 450, 5)
$nGif3 = _GUICtrlCreateGif(@SystemDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@systemdir) & "\oobe\images\dialup.gif", 5, 300)

GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)()

$iTimer = TimerInit (http://www.autoitscript.com/autoit3/docs/functions/TimerInit.htm)()

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)() <> -3
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) TimerDiff (http://www.autoitscript.com/autoit3/docs/functions/TimerDiff.htm)($iTimer) >= 2000 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
GUICtrlDelete (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlDelete.htm)($nGif1)
GUICtrlDelete (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlDelete.htm)($nGif2)
;GUICtrlDelete($nGif3)
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

А нет, можно и останавливать:

GUICreate (http://www.autoitscript.com/autoit3/docs/functions/GUICreate.htm)("Embedded Web control Test", 640, 580)

$aGif1 = _GUICtrlCreateGif(@SystemDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@systemdir) & "\oobe\html\mouse\images\clicking.gif", 5, 5, -1, -1)
$aGif2 = _GUICtrlCreateGif(@WindowsDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@windowsdir) & "\pchealth\helpctr\System\images\progbar.gif", 450, 5)
$aGif3 = _GUICtrlCreateGif(@SystemDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@systemdir) & "\oobe\images\dialup.gif", 5, 300)

GUISetState (http://www.autoitscript.com/autoit3/docs/functions/GUISetState.htm)()

$iTimer = TimerInit (http://www.autoitscript.com/autoit3/docs/functions/TimerInit.htm)()

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) GUIGetMsg (http://www.autoitscript.com/autoit3/docs/functions/GUIGetMsg.htm)() <> -3
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) TimerDiff (http://www.autoitscript.com/autoit3/docs/functions/TimerDiff.htm)($iTimer) >= 2000 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$aGif1[0].Stop
$aGif2[0].Stop
;$aGif3[0].Stop
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _GUICtrlCreateGif($sGifFile, $iLeft, $iTop, $iWidth=-1, $iHeight=-1)
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $iSizes, $oIE, $nGUIActiveX, $iTimer

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) ($iWidth = -1 Or (http://www.autoitscript.com/autoit3/docs/keywords.htm#Or) $iHeight = -1) And (http://www.autoitscript.com/autoit3/docs/keywords.htm#And) FileGetSize (http://www.autoitscript.com/autoit3/docs/functions/FileGetSize.htm)($sGifFile) > 9 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then)
$iSizes = FileRead (http://www.autoitscript.com/autoit3/docs/functions/FileRead.htm)($sGifFile, 10)

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $iWidth = -1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) $iWidth = Asc (http://www.autoitscript.com/autoit3/docs/functions/Asc.htm)(StringMid (http://www.autoitscript.com/autoit3/docs/functions/StringMid.htm)($iSizes, 8, 1)) * 256 + Asc (http://www.autoitscript.com/autoit3/docs/functions/Asc.htm)(StringMid (http://www.autoitscript.com/autoit3/docs/functions/StringMid.htm)($iSizes, 7, 1))
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $iHeight = -1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) $iHeight = Asc (http://www.autoitscript.com/autoit3/docs/functions/Asc.htm)(StringMid (http://www.autoitscript.com/autoit3/docs/functions/StringMid.htm)($iSizes, 10, 1)) * 256 + Asc (http://www.autoitscript.com/autoit3/docs/functions/Asc.htm)(StringMid (http://www.autoitscript.com/autoit3/docs/functions/StringMid.htm)($iSizes, 9, 1))
EndIf (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndIf)

$oIE = ObjCreate (http://www.autoitscript.com/autoit3/docs/functions/ObjCreate.htm)("Shell.Explorer.2")
$nGUIActiveX = GUICtrlCreateObj (http://www.autoitscript.com/autoit3/docs/functions/GUICtrlCreateObj.htm)($oIE, $iLeft, $iTop, $iWidth, $iHeight)
$oIE.Navigate("about:blank")

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) $oIE.Busy
Sleep (http://www.autoitscript.com/autoit3/docs/functions/Sleep.htm)(1)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

$oIE.Document.Body.Background = $sGifFile
$oIE.Document.Body.Scroll = "No"

Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $aRet[2] = [$oIE, $nGUIActiveX]

Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $aRet
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Если сильно постараться, то можно задать параметр таймаут для функции «_GUICtrlCreateGif», чтобы не нужно было проверять это в главном цикле, функция сама будет останавливать Gif'ку по истечению таймаута.




© OSzone.net 2001-2012