January 11, 2012, 7:55 AM — Macro Scheduler 13 ($95, 30-day free trial) is a powerful tool for automating complex processes under Windows. The name "Scheduler" is a bit of an undersell; while it has all the scheduling and control options you could want, in my opinion, the real selling point of this program is that it's a complete development environment for scripts. It includes an array of tools to make code generation easier while not tying the developer down to a small set of pre-determined options.
When a user first opens Macro Scheduler, they will see a list of predefined macros, most of which exist only to show off some feature of Macro Scheduler or serve as code examples. It's fairly telling that double-clicking on an item, the most common thing a Windows user does when presented with a list, launches the program editor rather than executing the macro--Macro Scheduler lets you know up-front where it's head's at, as it were.
While there is a macro recording feature that will monitor and record your actions, and while there are number of wizards that make editing particular code functions much easier, it's very unlikely, in my opinion, for someone who is not already at least a part-time programmer to get full use out of Macro Scheduler. So much of what you can do with the program is bound up with its robust language features that you'd miss out on most of it if you ignore or can't access them. At the same time, I'm sure some experienced programmers will note that they could use other languages with appropriate OS hooks to duplicate what Macro Scheduler gives you--but you'll spend time reinventing the wheels that Macro Scheduler provides from the get-go.
The programming language used by Macro Scheduler is a slight variant on Visual BASIC, and uses very familiar constructs for loops, subroutines, and so on. Anyone with experience in any mainstream procedural, imperative, language will quickly pick up the straightforward syntax. You'll spend most of the learning curve studying the extensive list of functions, as there is very often a high-level function call that can replace a lot of low-level code. (For example, you easily write a routine that gets all the files in a directory and then loops to find the most ancient .jpg file... or you can use "getOldestFile>c:\my pictures\*.jpg,oldPicture".) Fortunately, the program functions are all clearly organized and integrated with the script editing window, along with wizards that help you fill in complex parameters, such as the multiple options available to model mouse motion. Manually specifying all the options for "click here, move there while holding down shift, then double-right-click with ctrl-alt pressed" is much harder than using the wizard to generate the code, which you can then hand-edit as needed.