检查在特定时间内调用函数的次数

时间:2017-07-11 09:57:02

标签: timer autoit

我在AutoIt中有以下功能:

Func Initialize()

   Sleep(2000)
   MouseClick("left",1881,52,1)
   Sleep(5000)
   MouseClick("left",1786,176,1)
   Sleep(30000)
   Send("{TAB}")
   sleep(5000)
   Send("{ENTER}")
   sleep(5000)
   Send("{TAB 4}")
   sleep(5000)
   Send("{ENTER}")
   Sleep(2000)

EndFunc

当我遇到某个问题时,我称之为。现在我想知道最后一次和当前通话之间经过了多长时间,或者在一定时间内调用Initialize()多少次。

我应该使用计时器还是活动?

1 个答案:

答案 0 :(得分:0)

  

现在我想知道,在最后一次调用此函数和当前调用之间经过了多长时间,或者在一定时间内调用了Initialize()函数的时间?

根据Documentation - Keywords - Static

  

静态变量同样只在声明它们的函数中可见,但它们在函数完成执行后仍然存在,保留它们的最后一个值。

示例演示函数调用的计数和连续调用之间的测量时间(未经测试,无错误检查):

Global Const $g_iDelay      = 1000 * 2
Global Const $g_sKeyQuit    = 'q'
Global Const $g_sKeyReset   = 'r'
Global Const $g_sTplMsg     = 'FunctionAmount() call #%s.\nFunctionTime() %i ms since last call.\n'
Global Const $g_sTplQuit    = 'Pressed "%s", shutting down ...'

Global       $g_bStateQuit  = False
Global       $g_bStateReset = False

Main()

Func Main()
    Local $iCountAmount = 0
    Local $iCountMs     = 0
    Local $sMsg         = ''

    HotKeySet($g_sKeyQuit, 'SetStateQuit')
    HotKeySet($g_sKeyReset, 'SetStateReset')

    While Not $g_bStateQuit

        $iCountAmount  = FunctionAmount($g_bStateReset)
        $iCountMs      = FunctionTime()
        $sMsg          = StringFormat($g_sTplMsg, $iCountAmount, $iCountMs)
        $g_bStateReset = False

        ConsoleWrite($sMsg)
        Sleep($g_iDelay)

    WEnd

    Exit
EndFunc

Func FunctionAmount(Const $bReset = False)
    Local Static $iCount = 0

    If $bReset Then $iCount = 0

    $iCount += 1

    ; Your code here.

    Return $iCount
EndFunc

Func FunctionTime()
    Local Static $hTimer = 0
    Local        $fDiff  = 0

    $fDiff  = $hTimer ? TimerDiff($hTimer) : 0
    $hTimer = TimerInit()

    ; Your code here.

    Return $fDiff
EndFunc

Func SetStateQuit()
    Local Const $sMsg = StringFormat($g_sTplQuit, $g_sKeyQuit)

    $g_bStateQuit = True

    ConsoleWrite($sMsg)
EndFunc

Func SetStateReset()

    $g_bStateReset = True

EndFunc
  • 使用 Q 退出。
  • 使用 R 重置函数调用计数。
  • FunctionAmount()返回(表示整数)调用函数的次数。设置$bReset = True重置计数。根据需要进行调整(添加您自己的源代码)。
  • FunctionTime()返回(表示浮点数)自上次调用函数以来的ms量(第一次调用时为0)。根据需要进行调整(添加您自己的源代码)。