我在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()
多少次。
我应该使用计时器还是活动?
答案 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
FunctionAmount()
返回(表示整数)调用函数的次数。设置$bReset = True
重置计数。根据需要进行调整(添加您自己的源代码)。FunctionTime()
返回(表示浮点数)自上次调用函数以来的ms量(第一次调用时为0
)。根据需要进行调整(添加您自己的源代码)。