ComputorEdge Online

AutoHotkey Versus AutoIt

A Comparison and Review of the Free Windows Scripting Languages

by Jack Dunning

When people begin investigating AutoHotkey, they soon discover that its roots lie in the older Windows scripting language AutoIt. Both programs have active support and serve very similar purposes by adding power to your Windows computer. The question is "Which language is right for you?" Before answering that question the two languages must be compared and contrasted. A Google search will uncover many discussions comparing the two Windows scripting tools, but most of the conclusions come down to people liking what they know best. In this chapter I endeavor to offer enough factual information about both free programs for you to make an informed decision—although the only way to know for sure which is best for you is by testing both..

ComputorEdge AutoHotkey E-BooksFull Disclosure: While I attempt to put aside my personal bias (I've written seven AutoHotkey books) and give a fact-based appraisal grounded upon my research and knowledge of programming languages, I do not have the same in depth knowledge of AutoIt that I do of AutoHotkey. Fortunately, there is a good deal of data for review from people who have used both languages.

First, since both AutoHotkey and AutoIt are free to use, there is no reason not to test or use both. I'm a great believer in using the right tool for the job—especially when the tools are free. If you are comfortable with writing scripts, then you may be served well by playing with each language for particular purposes. There may be applications where one is more suitable than the other. The only cost is the time it takes to do it.

It's important to note that the current versions of the AutoHotkey and AutoIt languages are not interchangeable. Each has its own particular syntax (set of commands and functions) which, while they are capable of accomplishing the same thing, are written in a totally different manner. To make an informed decision you will want to see those differences. A couple of simple examples are provided below.

The Names AutoHotkey and AutoIt

ComputorEdge Software ShowcaseThe name of each scripting language gives us insight into the differences between the two. While you can do almost anything in AutoHotkey that you can in AutoIt (and vice versa), there are some noticeable differences. The underlying meaning of the terms AutoIt and AutoHotkey express the original impetus for each program. While both are used for Windows program automation, that is the primary thrust of AutoIt—thus the name. As suggested by the name AutoHotkey, hotkey creation and hotstring replacement through keyboard action is integral to the program. While AutoHotkey has implemented simple ways to create hotkeys and hotstrings, the AutoIt community has never consider those features high priority—although there is a specific function for creating hotkeys in AutoIt—HotKeySet().

It seems that the split occurred after programmer "Chris Mallett's proposal to integrate hotkey support into AutoIt v2" received little response from the AutoIt community causing Mallett to start writing his own version of the then open source AutoIt—calling it AutoHotkey. The name AutoHotkey demonstrates the primary functional difference between the two scripting languages. AutoHotkey offers simple direct support for one-line assignment of hotkeys and hotstrings while the current version of AutoIt requires the use of functions to implement the same or similar hotkey and hotstring features. (See the comparisons below.) This has caused the two language to be viewed very differently. You might say that AutoIt is for Windows automation and AutoHotkey for easy implementation of Windows hotkeys and hotstrings plus Windows automation. (This is not a completely fair comparison since Windows automation, app development, and hotkey/hotstring implementation can be done with either scripting language. They are just done in a different way.)

The result is that many AutoHotkey users who have switched have been extremely pleased with the results after converting most of their scripts to AutoIt, but, even then, they tend to continue using AutoHotkey for their hotkey/hotstring implementations—especially with long list of hotstrings such as the AutoCorrect scripts. Understand that most of these individuals who made the jump to AutoIt from AutoHotkey are more experienced with script writing and programming.

Update December 17, 2015: After completing a series of blogs on AutoHotkey Hotstrings, I've come to realize that there are many people who might want to use AutoHotkey just for the easy built-in Hotstring structure. If you're a writer, student, or anyone else who does a lot of word processing, then you'll be amazed at the AutoCorrect and text expansion/replacement capabilities of AutoHotkey. There are many cool text tricks which you can implement with Hotstrings. This applies equally to the simple built-in basic Hotkey structure in AutoHotkey.

For beginning script writers, the syntax for hotkeys and hotstrings (text expansion) is much simpler in AutoHotkey (a couple of colons ::). This attracts novice users since their first scripts often consists of this type of easy coding. As these beginners become more daring, they naturally venture into the other slightly more complex commands found in AutoHotkey. The function oriented language of AutoIt may be intimidating for the newbie while it might be more natural for the experienced programmer.

The commands in the early versions of AutoIt looked very much like those in the current release of AutoHotkey. After the split between the two languages, AutoIt moved in a new direction (version 3) using more BASIC-like functions while AutoHotkey continued with the original command structure used in the early versions of AutoIt. I don't know that there is a clear advantage of one language structure over the other, but each certainly has its own separate learning curve.

AutoHotkey Versus AutoIt for Hotkeys and Hotstrings

The following is an example of what's required to set up a hotkey in AutoHotkey:

Insert::Run, %A_MyDocuments%
It's one line of code that turns the INSERT (Insert) into a hotkey which opens your Windows Documents folder. The percent signs (%) surrounding the built-in variable A_MyDocuments evaluates the path to the Documents folder.

In AutoIt it takes few more lines:

HotKeySet("{Ins}", "openDocs")

Func openDocs()
  Run('explorer ' & @MyDocumentsDir)
EndFunc
The first line uses the AutoIt function HotKeySet() to assign the INSERT key (Ins) to run the user defined function openDocs(). The openDocs() function uses the Run() function to open the Windows Explorer.exe program at the user's documents folder—designated by the macro (built-in variable) @MyDocumentsDir. The ampersand (&) appears to be the symbol for concatenation (combining strings). As can be seen, there are a few more lines needed in AutoIt. This is comfortable for experienced script writers, but could be confusing for the average Windows user.

This next example is a text expansion (or hotstring) for the phrase "by the way" in AutoHotkey:

::btw::by the way
Hotstrings are assigned by placing double colons (::) at the beginning of the line followed by the hotstring and another set of double colons (::btw::). The replacement text (by the way) follows the second set of double colons. Once the script is loaded, anytime "btw" is typed followed by a space or punctuation, it is automatically replaced with "by the way."

I couldn't find a built-in hotstring function in AutoIt, but I did locate this example which includes a special AutoIt script (HotString.au3) to create the function HotStringSet():

#include <HotString.au3>

HotStringSet("callme{enter}", examplefunction)

While 1
    Sleep(10)
WEnd

Func examplefunction()
    MsgBox(0,"","You typed callme! :)")
EndFunc
To replicate the AutoHotkey example would require the use of the AutoIt Send() function in place of the MsgBox() function. If you need text expansion, then it looks like AutoHotkey may be your program of choice. This is not a minor point since the same simple hotstring technique found in AutoHotkey (in a slightly different format) can be used to run a set of commands in the same manner as a hotkey subroutine.

Both languages are capable of much more involved programming and Windows app building which have nothing to do with either automation or hotkeys/hotstrings. AutoHotkey syntax uses primarily text commands whereas AutoIt uses functions. For example, to add a button to a Graphic User Interface (GUI) window AutoHotkey uses the following command:

Gui, Add, Button [, Options, Text]
To create a Gui button in AutoIt the following function is used:
GUICtrlCreateButton( "text", left, top [, width [, height [, style = -1 [, exStyle = -1]]]] )
This is not a major difference for experienced programmers, but it you've grown accustomed to doing it one way, switching to another method requires developing a different mindset. While there is no particular advantage to the AutoHotkey command structure, it may look simpler to the novice.

The Confusing Side of AutoHotkey

Jack's AutoHotkey Blog

In many ways the current AutoIt version is a much cleaner language than AutoHotkey. It has not fallen victim to the confusion caused by maintaining backward compatibility with older scripts. Since virtually any older AutoHotkey script will run with the current 1.1 version (AutoHotkey_L) of AutoHotkey, there are numerous redundant commands and methods for getting the same thing done. This is a source of confusion for AutoHotkey users because, although there is more than one way to get something done, each requires a different implementation.

The classic example is the use of both the equals sign (=) and a colon plus the equals sign (:=) to assign a value to a variable:

MyString = This is a literal string

CopyOfVar = %Var%
and
MyString := "This is a literal string."

CopyOfVar := Var
are identical sets of expressions. But if you use the wrong one in the wrong place with the wrong format, your script won't run properly. There are a number of other examples of this type of duplication caused by legacy AutoHotkey commands included for backward compatibility. Often the different variations may be used in the same script.

There is an attempt underway to fix the problem and clean up the code with version 2.0 of AutoHotkey. (Version 2.0 is still in the alpha stage of development and not recommended for newbies.) It is designed to eliminate the excess baggage. However, that would mean that many of the scripts available today would no longer run properly with the new version of AutoHotkey. It is difficult to know how widely this new, cleaner version would be accepted. The changes which would be required in older scripts are not well documented and many people will not relish the extra work. As far as I know, AutoIt does not have a similar issue.

Interest in AutoHotkey Versus AutoIt

Based upon links found on Google Trends, interest in AutoHotkey appears to have caught up with AutoIt. (See Figure 1.) This is a momentum which is not likely to reverse.

Figure 1. Interest in AutoHotkey in the United States has slowly caught up with AutoIt. The trend favors AutoHotkey.

The primary reason for the growth of AutoHotkey is its initial simplicity. It's easy for the beginning script writer to get a result with just one line of code in a text file (a hotkey assignment or text string expansion). This is what got me started. Over time, and with a little curiosity, newbies start experimenting with other simple commands and scripts. Eventually, they are hooked and become part of the AutoHotkey community ready to help others.

Since many of the users don't consider themselves to be programmers, the AutoHotkey community works to help each other and is welcoming to beginning users. There are numerous online tutorials and people don't usually face impatiences when they ask newbie questions on a forum. (My experience on the AutoHotkey forums is that at any given time there are usually a number of people online willing and able to answer novice questions.) This makes it easier for people who have never before written a program.

Using AutoIt is a bit more daunting for the newbie script writer. If you're not already a programmer, the concept of using functions can be a little difficult to wrap your brain around. As far as I can see, there is no easy entry point in AutoIt for the complete novice. AutoIt seems to be used more by computing professionals and possibly to a greater degree within corporations. (I have no data to back up this statement, but it was a feeling expressed by AutoIt users.) If I had started with AutoIt first, then, who knows(?), I could be writing AutoIt books. However, I'm not sure the AutoIt users are as likely to need the help. As it is I'm happy with AutoHotkey—even with all of its quirks and idiosyncrasies. It's good stuff.

Some people suggest that AutoHotkey is not as extensive as AutoIt. I would be forced to differ. While there may be some minor technical advantages to AutoIt, I haven't seen much bragged about in AutoIt (arrays, object oriented coding, etc.) which isn't now available in the current version of AutoHotkey 1.1. As far as I can see, both have a great deal of capability for building Windows apps. If more is needed, then possibly the programmers should consider using a programming language such as C++ or Java.

If you're an experienced programmer and the simple hotkey and hotstring assignment found in AutoHotkey is not a requirement in your work, then I would likely recommend AutoIt as your Windows scripting language. If you're a beginner, then AutoHotkey may be just what you need. If you're somewhere in between, then it's a coin toss. Or, maybe you should use both—depending upon what you want to do.

Get this AutoHotkey overview e-book Free, AutoHotkey Tricks You Ought to Do with Windows!

*                    *                    *
Beginner's GuideThe second edition with more chapters and an index to the AutoHotkey commands found in the book is available in e-book format from Amazon (and other formats—EPUB and PDF— at the ComputorEdgeBooks Web site linked below). Jack's A Beginner's Guide to AutoHotkey, Absolutely the Best Free Windows Utility Software Ever!: Create Power Tools for Windows XP, Windows Vista, Windows 7 and Windows 8 (preferred, EPUB format for iPad, Android, and computers; MOBI for Amazon Kindle; and PDF for printing) offers a gentle approach to learning AutoHotkey. (Also available from Amazon for the Kindle and Kindle software on other devices.)

Building Power Tools for Windows XP, Windows Vista, Windows 7 and Windows 8, AutoHotkey is the most powerful, flexible, free Windows utility software available. Anyone can instantly add more of the functions that they want in all of their Windows programs, whether installed on their computer or while working on the Web. AutoHotkey has a universality not found in any other Windows utility—free or paid.

Based upon the series of articles in ComputorEdge, Jack takes you through his learning experience as he explores writing simple AutoHotkey scripts for adding repetitive text in any program or on the Web, running programs with special hotkeys or gadgets, manipulating the size and screen location of windows, making any window always-on-top, copying and moving files, and much more. Each chapter builds on the previous chapters.

For an EPUB (iPad, NOOK, etc.) version of A Beginner's Guide to AutoHotkey click here!

For a PDF version for printing on letter size paper for inclusion in a standard notebook of A Beginner's Guide to AutoHotkey click here!

*                    *                    *

Digging Deeper Into AutoHotkeyJack's second AutoHotkey book, Digging Deeper Into AutoHotkey (preferred, EPUB format for iPad, Android, and computers; MOBI for Amazon Kindle; and PDF for printing) is comprised of updated, reorganized and indexed columns from ComputorEdge is now available. Since the columns were not all written in a linear fashion, the book has been reorganized and broken up into parts by topic. The book is not for the complete beginner since it builds on the information in A Beginner's Guide to AutoHotkey. However, if a person is reasonably computer literate, they could go directly to this book for ideas and techniques without the first book. (Also available from Amazon for the Kindle and Kindle software on other devices.)

For an EPUB (iPad, NOOK, etc.) version of Digging Deeper into AutoHotkey click here!

For a PDF version for printing on letter size paper for inclusion in a standard notebook of Digging Deeper into AutoHotkey click here!

*                    *                    *

AutoHotkey ApplicationsJack's third AutoHotkey book AutoHotkey Applications (preferred, EPUB format for iPad, Android, and computers; MOBI for Amazon Kindle; and PDF for printing) is an intermediate level book of ideas and applications based primarily on the AutoHotkey GUI command. The book emphasizes practical applications. The book is not for the complete beginner since it builds on the information in the other two books. However, if a person is reasonably computer literate, they could go directly to this book for ideas and techniques without the other books. There is an extensive index to the ideas and techniques covered in the back of the book. (Also available from Amazon for the Kindle and Kindle software on other devices.)

For an EPUB (iPad, NOOK, etc.) version of AutoHotkey Applications click here!

For a PDF version for printing on letter size paper for inclusion in a standard notebook of AutoHotkey Applications click here!

*                    *                    *

AutoHotkey RegExThis Beginner's Guide to Using Regular Expressions in AutoHotkey is not a beginning level AutoHotkey book, but an introduction to using Regular Expressions in AutoHotkey (or most other programming languages). To get the most from this book you should already have a basic understanding of AutoHotkey (or another programming language). Regular Expressions (RegEx) are a powerful way to search and alter documents without the limitations of most of the standard matching functions. At first, the use of RegEx can be confusing and mysterious. This book clears up the confusion with easy analogies for understanding how RegEx works and examples of practical AutoHotkey applications. "Regular Expressions in AutoHotkey" will take you to the next level in AutoHotkey scripting while adding more flexibility and power to your Windows apps. (This book is also available at Amazon.com)



For additional AutoHotkey books in all formats, visit ComputorEdge E-Books.


ComputorEdge