AutoHotkey
Developer(s) | Chris Mallett, Steve Gray |
---|---|
Stable release |
1.1.24.03
/ November 19, 2016[1] |
Preview release |
2.0-a077
/ November 26, 2016[2] |
Repository |
github |
Operating system | Microsoft Windows |
Type | Scripting language Automation GUI utility |
License | GPL |
Website |
ahkscript |
AutoHotkey is a free, open-source custom scripting language for Microsoft Windows, initially aimed at providing easy keyboard shortcuts or hotkeys, fast macro-creation and software automation that allows users of most levels of computer skill to automate repetitive tasks in any Windows application. User interfaces can easily be extended or modified by AutoHotkey (for example, overriding the default Windows control key commands with their Emacs equivalents).[3] The AutoHotkey installation includes its own extensive help file with an always updated web-based version.[4]
Features
AutoHotkey scripts can be used to launch programs, open documents, send keystrokes and mouse clicks and movements.[5] AutoHotkey scripts can also assign, retrieve, and manipulate variables, run loops and manipulate windows, files, and folders. These commands can be triggered by a hotkey, such as a script that would open an internet browser whenever the user presses Ctrl+Alt+i on the keyboard. Keyboard keys can also be remapped or disabled, such that pressing the letter q, for example, might result in the computer receiving a letter r, or nothing at all.[6] AutoHotkey also allows for 'hotstrings' that will automatically replace certain text as it is typed; the most typical use for hotstrings is expanding abbreviations, such as assigning the string "btw" to send the text "by the way" when typed, or the text "%o" to send "percentage of".[7]
More complex tasks can be achieved with custom data entry forms (GUI windows), working with the system registry, or using the Windows API by calling functions from DLLs. The scripts can be compiled into an executable file that can be run on other computers that do not have AutoHotkey installed. The source code is in C++ and can be compiled with Visual Studio Express.
Memory access through pointers is allowed just as in C.[8]
Common AutoHotkey tasks:
- Remapping the keyboard, such as from QWERTY to Dvorak or other alternative keyboard layouts.
- Using shortcuts to fill in frequently-used file names or other phrases.
- Controlling the mouse cursor with a keyboard or joystick.
- Opening programs, documents, and websites with simple keystrokes.
- Adding a signature to e-mail, message boards, etc.
- Monitoring a system and automatically closing unwanted programs.
- Scheduling an automatic reminder, system scan, or backup.
- Automating repetitive tasks in online games (often in violation of said games' terms of service).
- Filling out contest and freebie forms automatically (i.e., it can type in your name, address, etc. automatically).
- Quick code testing before implementing in another (more time consuming) programming language.
History
The first public beta of AutoHotkey was released on November 10, 2003[9] after author Chris Mallett's proposal to integrate hotkey support into AutoIt v2 failed to generate response from the AutoIt community.[10][11] So the author began his own program from scratch basing the syntax on AutoIt v2 and using AutoIt v3 for some commands and the compiler.[12] Later, AutoIt v3 switched from GPL to closed source because of "other projects repeatedly taking AutoIt code" and "setting themselves up as competitors."[13]
In 2010, AutoHotkey v1.1 (originally called AutoHotkey_L) became the platform for ongoing development of AutoHotkey.[14] Another port of the program is AutoHotkey.dll.
Examples
This script swaps control and alt keys.
LCtrl::Alt
LAlt::Ctrl
The following script will allow a user to search for a particular word or phrase using Google. After copying text from any application to the Clipboard, pressing the configurable hotkey ⊞ Win+g will open the user's default web browser and perform the search.
#g:: ; Win+g
Run http://www.google.com/search?q=%clipboard%
Return
The following is an example of the script required to create the hotstring "afaik," which is automatically replaced by "as far as I know":
::afaik::as far as I know
The following is an example of a simple function in AutoHotkey. When a URL is copied to the Clipboard, the hotkey Alt+x will check the URL for any/all parentheses and replace them with alternate characters before pasting the URL from the Clipboard:
!x:: ; Alt+x
URLReplace()
Send ^v ; Ctrl+v
Return
URLReplace() {
StringReplace, Clipboard, Clipboard, (, `%28, All
StringReplace, Clipboard, Clipboard, ), `%29, All
}
In this example, once the contents of a user name or IP Address link have been copied from anywhere on Wikipedia's site to the Clipboard (using Firefox), the following script allows a user to perform the function CopyUser on the Clipboard's contents and save it to a variable designated by either the hotkey Ctrl+⇧ Shift+W or the hotkey Ctrl+⇧ Shift+E. The hotkey Ctrl+⇧ Shift+R utilizes the resultant variables to produce a revert edits summary.
^+w::last := CopyUser() ; Ctrl+Shift+w
^+e::edit := CopyUser() ; Ctrl+Shift+e
CopyUser() {
Clipboard =
StringReplace, Clipboard, Clipboard, http://en.wikipedia.org/
StringReplace, Clipboard, Clipboard, wiki/
StringReplace, Clipboard, Clipboard, w/index.php?title=
StringReplace, Clipboard, Clipboard, Special:Contributions&target=
StringReplace, Clipboard, Clipboard, User:
StringReplace, Clipboard, Clipboard, &action=edit
StringReplace, Clipboard, Clipboard, _, %A_Space%, All
Return, Clipboard
}
; Ctrl+Shift+r
^+r::Send revert edits by [[Special:Contributions/%edit%|%edit%]] to last version by %last%
Community
The online community forum for AutoHotkey has around 27,300 registered users and around 482,000 posts as of January 2012.[15]
The online chat room for AutoHotkey is located on Freenode IRC with an average of 40 connected users as of November 2009.[16]
The administration of the official site has changed.[17][18]
User-contributed features
There are extensions/interops/inline script libraries available for usage with/from other programming languages:
- VB/C# (.NET)[19]
- Lua[20]
- Lisp[21]
- ECL[22]
- VBScript/JScript (Windows Scripting Host)[23]
- Embedded machine code[24]
Other major plugin enable support for:
- Aspect-oriented programming
- Function hooks[25]
- COM wrappers[26]
- Console Interaction[27]
- Dynamic Code Generation[28]
- HIDs[29]
- Internet Explorer Automation[30]
- SmartGUI Creator[31]
- Sparrow AHK Web Server[32]
- Synthetic programming
- Bit Wizardry[33]
- Windows Event Hooks[34]
Malware
Because AutoHotkey contains many powerful automation tools, it is sometimes used to create malicious software. Given the nature of interpreted languages, this results in a large chunk of the AutoHotkey interpreter (which is not itself malicious) being distributed along with the malicious software. When antivirus vendors try to add the signature of the malware to their databases they often accidentally add the signature of the AutoHotkey interpreter instead, resulting in a false positive.[35][36][37][38][39][40][41]
See also
- AutoIt
- KiXtart
- Winbatch
- Macro Express
- Bookmarklet
- iMacros for Firefox
- AutoKey (for Linux)
- Automator (for Macintosh)
- Keyboard Maestro (for Macintosh)
References
- ↑ "AutoHotkey Downloads".
- ↑ "AutoHotkey v2 Downloads".
- ↑ Contact Erica Sadun: Comment (2005-08-19). "Ericasadun 2005 Life Hacker". Lifehacker.com. Retrieved 2011-12-02.
- ↑ http://ahkscript.org/docs/AutoHotkey.htm
- ↑ "AutoHotkey Tutorial: Macro and Hotkey Creation". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "Remapping Keys and Buttons". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "Hotstrings and Auto-replace (similar to AutoText and AutoCorrect)". Autohotkey.com. 2005-01-09. Retrieved 2011-12-02.
- ↑ "AutoHotkey Changes and New Features, v1.0.47 - June 19, 2007". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "AutoHotkey Changelog for Years 2003-2004". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "Author Chris Mallett's post on the AutoHotkey Forums". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "An AutoIt / AutoHotkey nonfunctional comparison". Paperlined.org. Retrieved 2011-12-02.
- ↑ "Author Chris Mallett's post on the AutoHotkey Forums". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "Licensing Opinions - AutoIt Forums". Autoitscript.com. Retrieved 2011-12-02.
- ↑ "Forum post by Chris, announcing AutoHotkey_L now main platform". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "AutoHotkey Community Forum Page". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "Getting connected to AutoHotkey's IRC Chat". Autohotkey.com. Retrieved 2011-12-02.
- ↑ "The AutoHotkey Foundation : Our History". The AutoHotkey Foundation. 2014-05-26. Retrieved 2016-07-23.
- ↑ "The future of AutoHotkey.com". Chris. 2012-01-26. Retrieved 2012-02-01.
- ↑ .NET Framework
- ↑ LibLua
- ↑ Lisp on win32
- ↑ Embeddable Common Lisp
- ↑ Windows Scripting Host
- ↑ Embedded machine code
- ↑ Function Hooks
- ↑ COM Wrappers
- ↑ Console Interaction (LibCon)
- ↑ Dynamic Code Generation
- ↑ Human Interface Device(HID) Support
- ↑ Internet Explorer Automation
- ↑ SmartGUI Creator
- ↑ Sparrow AHK Web Server
- ↑ Bit Wizardry
- ↑ Windows Event Hooks
- ↑ "trojan in autohotkey installer?". AutoHotkey Forums. gallaxhar.
- ↑ "False positive virus alert?". AutoHotkey Forums. narny.
- ↑ "False positive on antivirus programs". AutoHotkey Forums. Ferry.
- ↑ "Trojan.Antavmu detected in AutoHotKey". AutoHotkey Forums. apao.
- ↑ "Avast, false positive exe files". AutoHotkey Forums. Doron.
- ↑ "False Positive: Malwarebytes Anti-Malware PRO and Windows 8". AutoHotkey Forums. PuzzledGreatly.
- ↑ "Antivirus scan for AutoHotkey112400_Install.exe". VirusTotal.