Anyone who’s taken advantage of their office application’s macro function will realise just how useful a tool it is: suddenly, instead of having to perform several repetitive tasks or mouse clicks over and over again, you can record those keystrokes or mouse clicks, then “play” them back with a single click or keystroke, saving you time and effort in the process.

The only problem with macros is that they’re limited to Office, so what can you do if you’d like to extend this functionality to another program – or across Windows as a whole? The solution lies a program called AutoHotkey. This allows you to create scripts that can automate not just common commands like launching programs, but also mouse clicks and keystrokes. It can also be used as an auto-text tool, to create customised entry forms, dialogue boxes and menu bars, and remap keys and buttons on mice and joysticks for good measure.

Scripting for most of these is done by hand in AutoHotkey’s editor, but mouse and keystrokes can also be recorded using the supplied macro recorder (AutoScriptWriter), just like in Office. We’ve found it’s more effective to record keystrokes rather than rely on mouse clicks as these are based on the mouse’s position on the screen, which means they won’t work if a dialogue box or program window is resized or moved.

AutoHotKey 1.1.24.03 (changelog):

- Fixed COM exception messages to not end in `r.
- Fixed {U+x} to support supplementary characters (x > 0xFFFF).
- Fixed class properties which lack get{} to return an empty value instead of the internal Property object when the class has a base which does not define a value for the property. Properties defined in baseless classes already behaved correctly.
- Fixed the background color of controls on a Tab3 control when the system has visual styles disabled (i.e. Windows Classic).
- Fixed handling of thread-exit in functions which are called directly by an event (such as OnExit functions). This bug had no known effect except in the v2-alpha branch.
- Fixed the debugger to detect disconnection immediately (i.e. when a client terminates without calling stop/detach).
- Fixed the debugger to treat property_get -m 0 as "unlimited", as per the DBGp spec.
- Fixed the debugger to expect base64 for property_set -t integer/float, as per the DBGp spec.

Verdict ratingsratingsratingsratingsratings

A powerful tool with many uses - even relatively inexperienced users will find the macro recorder a useful way to automate a repetitive series of clicks or keystrokes.