Automate your work with AutoHotkey

Updated: 04/02/2019 by Computer Hope

AutoHotkey is a free and powerful tool that allows you to automate almost anything on your Windows computer in any program. Computer Hope uses this tool daily to help answer common questions asked in e-mail quickly and perform other common repetitive tasks. If you do anything daily that requires you to repeat the same actions, we highly recommend using this tool. This page demonstrates some of this program's capabilities.


This tool can be used to automate tasks in gaming, some online games may consider this cheating and if caught it may result in a ban.

If you want to follow along with this documents examples, please download and install AutoHotkey before following any of these steps. Otherwise, skim this document for a better understanding of the program before downloading and installing it on your computer.

Edit the script

Edit AutoHotkey script

After AutoHotkey is installed to create and edit a script right-click anywhere on the desktop or in a folder, click New, and choose AutoHotkey script. Name the script whatever you want and then right-click the script file and choose Edit the script.


If you plan on always using the same scripts you can also load AutoHotkey at startup, right-click the AutoHotkey icon (AutoHotkey icon) in the Windows notification area, and click Edit this script. The default script (AutoHotkey.ahk) opens in your default text editor and allow you to add or change your script. Each time AutoHotkey loads when your computer starts this default script will load this script.

Script basics

Each script in AutoHotkey can also be assigned a keyword (hotstring) or a personalized keyboard shortcut key. When using a keyboard shortcut any shortcut can be used as long as Windows has not already assigned those keys to another task. Each shortcut key can be comprised of any of the following modifier keys and any other letters, numbers, or other keys on the keyboard followed by two colons (::).

AutoHotkey includes two example scripts, the first one (as shown in the picture) opens the AutoHotkey web page when you press the Windows Key and Z at the same time. Which can be done now if you have AutoHotkey installed and the default autohotkey.ahk loaded. Otherwise, this line can be added to a new script, saved, and ran to allow this shortcut to work.


Most scripts will be more than one line. However, in the above example, it is only one line and needs no additional commands. In the following script example, the script has multiple lines, and as can be seen must be finalized with the "return" command to prevent anything following this script from being executed.

IfWinExist Untitled - Notepad
Run Notepad

The above script starts with the shortcut key Ctrl+Alt+n, the next four lines are an if else command, which in English translate to "if an untitled Notepad window exists then make that window active, else run a new Notepad."

Creating your first script

With your basic understanding of how this program works, lets create your first script to print "Hello World!" anywhere you want. Move the cursor to the end of your new script file or the default Autohotkey.ahk script file and add the following line.

::Hello::Hello World{!} My first script. ;Example comment

In this first example, we are not using a shortcut, only the keyword "hello" to execute the script. Also, because "!" is a modifier key command for the Alt key it has been surrounded by curly brackets, which indicates the key, not a command. Finally, this script also contains a comment at the end, which is everything from the semicolon to the end of the line. In AutoHotkey scripts, all text between a semicolon and the end of the line is considered to be a comment. You can use comments to help explain the code in the script.

Any time you make any changes to a script it must be reloaded or run for those changes to work.

To load the script, double-click the script file or right-click the script file and choose Run Script. If you're editing a running script, make sure to reload the script by right-clicking on the AutoHotkey icon (AutoHotkey systray or notification area icon) in the Windows notification area and choose the Reload This Script.

Once the script has been loaded, you should be able to type "hello" in the following text box and after pressing space or any punctuation the script type out "Hello World! My first script."


If you don't want to have to press the space or punctuation, you can add an asterisk between the two first colons.

Next, in the next example, we are creating a script that is executed with a shortcut key. Edit the script and add the following three lines to your script.

send Hello World{!}

After these three lines have been created, save the file as the same file name and then reload the script. If done successfully, you should be able to click in the text box and press the Windows Key + the F2 function key at the top of the keyboard to print Hello World! on the screen.

Any shortcut keys can also be added, data can be copied to and from the clipboard, and the script can sleep for any amount of time. Edit the script again and make the following changes to the script created earlier.

send Hello World{!}
example = %clipboard%
sleep, 1000
send, - new hello = %example%

In the above example, lines three and four have introduced how keys can be pressed in the script to perform other keyboard shortcuts. The third line is pressing Ctrl+Shift+Home to highlight all text before the cursor, and the next line is pressing Ctrl+C to copy the highlighted text. Anytime a key is pressed down (e.g., {CTRLDOWN}) make sure it is let go with up (e.g., {CTRLUP}), otherwise it will remain down and cause problems.

The fifth line introduces a variable and the %clipboard% command which contains anything in your clipboard. With this line, all contents in the clipboard are assigned to the "example" variable.

The next command is making the example variable all uppercase by using the StringUpper command and assigning the uppercase text back to the example variable. The StringLower command could also be used to make everything lowercase.

Next, the sleep command is a great command for making the script sleep for any length of time. 1000 is equal to 1 second. This command is useful and often necessary if the script has to wait for the computer to open a program or window.

Finally, the last send command will add " - new hello =" with the hello world now all in uppercase. This revised version of the script can be tested again in the text box.

Scripting the mouse

Window spy

Although almost anything can be done using keyboard shortcuts, there are still times you may want to click somewhere on the screen. Using the click command, you can click on any location of the screen as shown in the following example. To determine the location of where you want to click, use the Window Spy utility that can be opened by right-clicking the AutoHotkey icon (AutoHotkey notification area icon) and clicking Window Spy. As you move your mouse, the "In Active Window" displays the location of your mouse cursor's current position. Once you've determined where you want to click, add the Click command with the location of where you want the mouse to click.

Click 980,381

With this command once Win+F2 is pressed the mouse will click once at 980,381.

Run a program

If there is a program you run often, opening a program in a script can be as simple as typing run and the name of the file you want to run. Earlier in this document we gave an example of how to run Notepad by typing "run notepad" in the script. If you're familiar with the Windows Run, many of the same commands and ways you run a program or open a file will work in AutoHotkey. Below are some additional examples of what the run command can do in AutoHotkey.

Run, wordpad.exe, C:\My Documents, max

In the first example, this would open WordPad with the default directory C:\My Document, and open the window maximized.


Any Internet URL can be added after the run command to open that web page in your default browser.

Run, mailto:[email protected]?subject=My Subject&body=Body text example.

Here is another example of the run command, which is sending an e-mail using your default e-mail client and sending the e-mail to [email protected] The subject of the e-mail is "My Subject," and the body of the message is "Body text example."

Using variables

Like other programming and scripting languages, AutoHotkey supports the use of variables in the script. As seen earlier, we demonstrated copying the clipboard contents to a variable. A variable in AutoHotkey can be either a string or an integer and does not need to be declared like other programming languages.

In our first example, we will be using an integer variable to add two numbers together and display the results in a message box.

example := 5+5
msgbox, Example is equal to %example%
AutoHotkey msgbox

In the above example, "example" is our variable name, := is assigning the integer expression as the value of 5+5 (10). Once the variable has been assigned, we are using the msgbox command to open a message box and print its value. Whenever you are sending, printing, or assigning a variable it must begin and end with a percent symbol. After saving and reloading the above script, when pressing Win+F2 you should see a message box similar to the example shown on this page.

In the next example, we are assigning the variable a string value, and once again displaying the results in a message box.

example := "Nathan"
msgbox, Hello World! My name is %example%

In the above example, we are assigning the example variable to "Nathan" and because it is a string it must be surrounded in quotes. When Win+F2 is pressed this time, the script opens a message box saying "Hello World! My name is Nathan".

If you wanted to have a variable with a string and an integer you can have an expression outside the quotes, as seen in the following example.

example := "Example: " 5+5
msgbox, Mixed variable is %example%

When executed, the message box displays "Mixed variable is Example: 10"

Conditional statements

Conditional statements are also supported with AutoHotkey and support the operators and (&&), or (||), and not (!). Below are a few examples of how conditional statements can be used.

example := 5
if example = 5
msgbox, true
msgbox, false

In the above example, the variable is assigned a value of 5 and the conditional statement checks to see if the example is equal to 5 because this is true the msgbox will print true. If the example value was not equal to 5, the msgbox would have returned false.

You would think after seeing the first conditional statement example that you could put quotes around a string in the variable and conditional statement; however, this will not work. If you want to match a string, surround your expression with parentheses as shown in the following example.

example := "computer"
if (example = "hope")
msgbox, true
msgbox, false

In the above example, if the example variable is equal to hope, print true, otherwise print false. Because the example variable has been assigned as "computer" this script returns false.

Creating a loop

If there is a script that you want repeat, place the script into a loop, as seen in the following example script.

loop, 5
send Hello World{!}
sleep 300

Once the above script has been added, and the script re-loaded or run, you should be able to click in the text box and press Win+F2 to print Hello World! five times. The loop can be extended to repeat as many times as you want.

Regular expressions

Like other scripting languages, AutoHotkey also supports the use of regular expressions (regex), which allows you to replace any text within a string with other text. A regex is useful for times you may want to change the formatting of text or remove unnecessary data within a string.

example := "[email protected]"
example:= RegExReplace(example, "@.*", "")
msgbox, Username is %example%

In the example above, the third line with RegExReplace will replace the @ and everything after it with nothing. As a result, the example variable only shows the username account of the e-mail address. When Win+F2 is pressed, the message box displays "Username is support".

Additional information