Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как задать время выполнения функции? (http://forum.oszone.net/showthread.php?t=181012)

Centrinar 20-07-2010 16:49 1456756

Как задать время выполнения функции?
 
Наверное глупый вопрос но в справек не нашел, как задать время для функции с while. т.е. есть функция которая постоянно повторяеться, как задать что бы она работала например 2 сек.

Creat0R 20-07-2010 16:55 1456761

Цитата:

Цитата Centrinar
как задать время для функции с while. т.е. есть функция которая постоянно повторяеться, как задать что бы она работала например 2 сек »

Проверять в цикле таймер (TimerInit/TimerDiff):

Код:

Loop()

Func Loop()
    $iTimer = TimerInit()

    While 1
        ....

        If TimerDiff($iTimer) >= 2000 Then
            ExitLoop
        EndIf

        ....
    WEnd
EndFunc


Centrinar 20-07-2010 17:01 1456766

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 1456774

Цитата:

Цитата Centrinar
надо что бы GIF картинка крутилась 2 сек »

Тут можно только удалять Gif'ки...

Код:

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

$nGif1 = _GUICtrlCreateGif(@SystemDir & "\oobe\html\mouse\images\clicking.gif", 5, 5, -1, -1)
$nGif2 = _GUICtrlCreateGif(@WindowsDir & "\pchealth\helpctr\System\images\progbar.gif", 450, 5)
$nGif3 = _GUICtrlCreateGif(@SystemDir & "\oobe\images\dialup.gif", 5, 300)

GUISetState()

$iTimer = TimerInit()

While GUIGetMsg() <> -3
    If TimerDiff($iTimer) >= 2000 Then
        GUICtrlDelete($nGif1)
        GUICtrlDelete($nGif2)
        ;GUICtrlDelete($nGif3)
    EndIf
WEnd

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

Код:

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

$aGif1 = _GUICtrlCreateGif(@SystemDir & "\oobe\html\mouse\images\clicking.gif", 5, 5, -1, -1)
$aGif2 = _GUICtrlCreateGif(@WindowsDir & "\pchealth\helpctr\System\images\progbar.gif", 450, 5)
$aGif3 = _GUICtrlCreateGif(@SystemDir & "\oobe\images\dialup.gif", 5, 300)

GUISetState()

$iTimer = TimerInit()

While GUIGetMsg() <> -3
    If TimerDiff($iTimer) >= 2000 Then
        $aGif1[0].Stop
        $aGif2[0].Stop
        ;$aGif3[0].Stop
    EndIf
WEnd

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

    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"

    Local $aRet[2] = [$oIE, $nGUIActiveX]

    Return $aRet
EndFunc

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


Время: 01:09.

Время: 01:09.
© OSzone.net 2001-