TickCount: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
Line 30: Line 30:




<b>Example:</b>
<b>Example1:</b>
<highlight-nsis>
<highlight-nsis>
Section
Section
Line 38: Line 38:
${TickCountEnd} $0
${TickCountEnd} $0
MessageBox MB_OK "Message showed: $0 ms"
MessageBox MB_OK "Message showed: $0 ms"
SectionEnd
</highlight-nsis>
<b>Example2:</b>
<highlight-nsis>
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
SectionEnd
</highlight-nsis>
</highlight-nsis>

Revision as of 17:56, 19 July 2005

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} use 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