Jump to content
Sign in to follow this  


Recommended Posts

Well, I was in need of a timer, one that executed scripts after a certain time, sleep worked untill i had two functions that needed to be executed on diffrent times.. Also, i'm running this from Linux trough wine, so i can't manage to open the help file for autoit and the online document don't cover very much.

I couldn't find any information on how to make objects/classes or dictionary arrays( arrays that look like $array['key'] ), So i used Global variables that have a prefix of at_, so the global variables look like; at_<nameoftimer>Run, at_<nameoftimer>Run

I used a tiny little bit of sohfeyr s Timer function script?

My email/msn is: aco@mostpointless.com so contact me if you got questions, or wish me to edit this post.

Also I am happy if someone wants to develope this better/further

Some feedback is welcome, thanks.

        Contact the author at aco@mostpointless.com
    Function Delayrun()
        Return Values:
            1 : Executed first argument
            0 : Nothing done, continue
            First argument: $function : What string to execute
            Second argument $getendtime : Where to get the time when it shall execute the first argument
            This function checks if the time right now is bigger than the $endtime. If it has, it executes the script, return the integer 1, and continues the script.
Func delayrun($function, $getendtime)
    $endtime = Execute($getendtime)
    If API_GetTickCount() > $endtime Then
        Return 1
    Return 0
EndFunc ;==>delayrun

    Function Api_GetTickCount()
    This is not my self written function, so I'll skip to explain in detail what it does beside getting the system time(?)
Func API_GetTickCount()
    $t = DllCall("kernel32.dll", "int", "GetTickCount")
    Return $t[0]
EndFunc ;==>API_GetTickCount

Function timerrun()

    Return Values:
    <0-999999> : This is the endtime, when the delayrun should do a timerrun('run')
        First argument: $tmpString, this is similar to property in classes in other programming languages
            Selection of the first argument: 
            $which = 'run', resets the time and executes the second argument
            $which = 'init', initiliaze the script, declaring the globals so we get no errors when trying to do $which = gettime
            $which = 'gettime', this makes the function return a value thats time when its allowed to execute the third argument
        Second argument: $which, this is the global name of the timer, 
            for example if $which = <yourname>, then the function
            will create $at_<yourname>end and $at_<yourname>run global variables, to be able to track.
        Third argument: $what: default = ""(empty string) this determains what it shall execute when a $which = 'run' is used
        Fourth argument: $ms: default = 5000(integer), how many milliseconds from the time when executed/initilialized it shall execute
        This is the biggest "function", it returns time, keeps track of what to run, when to run.

Func timerrun($tmpString, $which, $what = "", $ms = 5000)
    $prefix = "at_"
    $whichEnd = $prefix & $which & "end"
    $whichRun = $prefix & $which & "run"
    If $tmpString == "run" Then
        Assign($whichEnd, API_GetTickCount() + $ms, 2)
        Assign($whichRun, $what, 2)
    ElseIf $tmpString == "init" Then
        Assign($whichEnd, API_GetTickCount() + $ms, 2)
        Assign($whichRun, $what, 2)
    ElseIf $tmpString == "gettime" Then
        Return Eval($whichEnd)
EndFunc ;==>timerrun

Below is only the test run, or examples, what ever you wish to call it
Func Test1()
    $Test1var = $Test1var + 1;
    ConsoleWrite("Timer1: " & $Test1var & @CRLF)
EndFunc ;==>Test1
Func Test2()
    $Test2var = $Test2var + 1;
    ConsoleWrite("Timer2: " & $Test2var & @CRLF)
EndFunc ;==>Test2
Make the test variables global, so we don't get any trouble.
Global $Test1var = 0
Global $Test2var = 2

here we initialize two timers, test1 and test2,
test1 is assigned to execute Test1() in 400 milliseconds
test2 is assinged to execute Test2() in 2000milliseconds 
timerrun('init', 'test1', 'Test1()', 400)
timerrun('init', 'test2', 'Test2()', 2000)

Start the looping so we can check times.

Delayrun will execute the first argument if it has passed the time it gets from the second argument
Well thats about it..
While 1
    delayrun("timerrun('run','test1','Test1()',400)", "timerrun('gettime','test1')")
    delayrun("timerrun('run','test2','Test2()',2000)", "timerrun('gettime','test2')")
Edited by XIXI

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...