Just a quick note as I use this function in various scripts. This adds the 1000th separator comma:

    	FormatAddCommas(val) {
    		StringLen, OutputVar, Result
    		NumLoop := (OutputVar // 3)
    		DNum = 3
    		Loop, % (NumLoop+1)
    		   StringReplace, Result, Result, %Digit%,`,%Digit%
    		   DNum += 4
    		StringLen, OutputVar, Result
    		Loop, %OutputVar%
    			FirstChar:=Substr(Result, 1, 1)
    			IfEqual, FirstChar, `,
    				Result:=Substr(Result, 2)
    			} else {
    		Return Result

Ok so there are more fun things to do out there. If you're the type of AutoHotkey programmer that doesn't like having to use the command prompt to write to an extra text file which your program has to read, then this is for you. DllCall will usually run contained in the program and can be hidden from the end-user.

The one to rule them all:
This is a function I pulled from the Autohotkey forums submitted by SKAN which lists all the functions for a specified Dynamic Link Library (DLL) along with an inputbox for convenience:

Well yes you could just use the Unicode version of Autohotkey. If you're looking for some up and down arrows which is all I wanted, then you don't have to use Unicode and you can use the Chr() function:

msgbox % Chr(24) ; upwards arrow
msgbox % Chr(25) ; downwards arrow, unstable

As you can tell these are my messed up functions that convert dates into seconds and vice-versa. They're a little disorganised but they're the ones I copy and paste to my scripts then modify.

In it's straightforward form

FormatTime( TimeString, Format )
     FormatTime, FormattedTime , TimeString, %Format% 
     return Formattedtime