TickCount

From NSIS Wiki
Jump to navigationJump to search
Author: Instructor (talk, contrib)


The Function Description

____________________________________________________________________________
 
                            TickCount
____________________________________________________________________________
 
Thanks kike_velez (Based on his code)
 
 
Get completion time of the some process.
 
 
Syntax:
${TickCountStart}
 
# ... code ...
 
${TickCountEnd} $var
 
# $var=Elapsed time since start in milliseconds
 
 
Note:
${TickCountStart} uses stack to save inicial time


Example1:

Section
	${TickCountStart}
	MessageBox MB_OK "TickCount started"
 
	${TickCountEnd} $0
	MessageBox MB_OK "Message showed: $0 ms"
SectionEnd

Example2:

Section
	${TickCountStart}
	MessageBox MB_OK "TickCount started"
 
	${TickCountEnd} $0
	IntOp $1 $0 / 1000
	IntOp $0 $0 % 1000
	IntOp $2 $1 / 60
	IntOp $1 $1 % 60
	IntOp $3 $2 / 60
	IntOp $2 $2 % 60
	MessageBox MB_OK "Message showed: $3 hours $2 min $1 sec $0 ms"
SectionEnd

The Function Code

Function TickCountStart
	!define TickCountStart `!insertmacro TickCountStartCall`
 
	!macro TickCountStartCall
		Call TickCountStart
	!macroend
 
	Push $0
	System::Call 'kernel32::GetTickCount()i .r0'
	Exch $0
FunctionEnd
 
Function TickCountEnd
	!define TickCountEnd `!insertmacro TickCountEndCall`
 
	!macro TickCountEndCall _RESULT
		Call TickCountEnd
		Pop ${_RESULT}
	!macroend
 
	Exch $0
	Push $1
	System::Call 'kernel32::GetTickCount()i .r1'
	System::Int64Op $1 - $0
	Pop $0
	Pop $1
	Exch $0
FunctionEnd