AutoHotkey is an open-source utility and can automate almost anything by sending keystrokes and mouse clicks. You can write macros by hand or use the macro recorder. You can also create hotkeys for keyboard, mouse, joystick, and handheld remote controls. Virtually any key, button, or combination can become a hotkey. Similarly, you can define abbreviations that expand as you type them. For example, typing btw can automatically produce by the way. Finally, you can create custom data entry forms, user interfaces, and menu bars.
Other features include remap keys, change soundcard settings (like volume or mute), use a joystick or keyboard as a mouse; make any window transparent, always-on-top, or alter its shape; manipulate the clipboard, customize the tray menu's icon and menu items, run existing AutoIt v2 scripts, and convert any script into an EXE file that can be run on any PC.
What is new in this release:
- Changed __Delete to catch and report exceptions when called during object cleanup. It previously had the (erroneous) effect of "postponing" the exception until the next function call or the end of the try-block/thread.
- Changed hotstring recognizer to reset when focus changes instead of just when the active window changes.
- Changed WinMenuSelectItem to treat menu
0&as the window's system menu.
- Added support for all built-in variables in the path passed to #Include.
- Added A_TimeIdleKeyboard and A_TimeIdleMouse.
- Added A_ListLines.
- Added A_ComSpec (alias of ComSpec).
- Added A_LoopFilePath (alias of A_LoopFileFullPath, which is a misnomer).
- Added hotstring X option to execute a same-line action instead of auto-replace.
- Added Hotstring().
- Added function hotstrings.
- Added MaxParts parameter to StrSplit.
- Improved #MenuMaskKey to allow specifying VK and SC, or vk00sc000.
- Fixed #MenuMaskKey treating some valid keys (such as Del) as invalid.
- Optimised detection of AltGr on Unicode builds. This fixes a delay which occurred at startup (since v1.1.27.00) or the first time Send is called for each target keyboard layout (prior to v1.1.27.00).
- Fixed misleading vicinity lines for
x up::yremap error.
Menu Tray, Icon, HICON:%hicon%, which now uses hicon without resizing it.
What is new in version 1.1.27.05:
- Fixed visible Input end keys causing any pending dead key to double up.
- Fixed hotstrings/Input affecting how Tab/Esc act in a dead key sequence.
- Fixed A_IconFile returning an incorrect path if a DLL was used.
- Fixed Gui with +Parent to center within the parent GUI vs. the screen.
- Fixed Input/hotstring detection of dead key sequences in Universal Windows Platform (UWP) apps.
< & vand
> & vbeing seen as duplicates, and similar cases. This affects custom combinations where the prefix key is also a modifier symbol. This also fixes hotkeys which consist only of modifier symbols and a single trailing space, such as
+ ::, to be treated as errors rather than ignoring the space (hotkeys do not permit trailing space).
What is new in version 1.1.26.01:
- Fixed RegDelete (with no args) failing when A_LoopRegSubKey is blank, such as when enumerating keys directly under the root key.
- Fixed RAlt/LAlt:: sometimes failing to prevent menu activation after the user alt-tabs away from a window and reactivates it.
- Fixed SC → VK translation for multimedia keys, CtrlBreak, Pause, LWin and RWin, with the exception that multimedia keys and CtrlBreak are still translated incorrectly on Windows 2000 and XP.
- Fixed VK → SC translation for multimedia keys, CtrlBreak and Pause.
- Fixed 'Wait commands such as RunWait to log extra lines for ListLines only when necessary to show that it is still waiting; that is, after resuming from an interruption which logged other lines
What is new in version 1.1.26.00:
- Changed the format ListVars uses to display variables containing objects. The object's class name is now shown.
- Added "class" and "clsid" modes to ComObjType().
- Revised class names shown by the debugger and significantly reduced code size in the process.
- Revised FileSetAttrib, FileSetTime and FileDelete to reduce code size. There should not be any changes in behaviour.
- Made other minor optimizations to code size.
- Fixed GetKeySC() with the key names Esc, Escape, ScrollLock and PrintScreen.
- Fixed hotstring word detection of words containing nonspacing marks, such as Arabic diacritics.
What is new in version 1.1.25.01:
Fixed Send to allow other scripts to act on modifier state changes which immediately precede a special character, such as the Shift release in Send.
What is new in version 1.1.24.07:
- Passing SetTimer's Label parameter an empty variable or an expression which results in an empty value is now considered an error. The parameter must be either given a non-empty value or completely omitted.
- Run-once timers are automatically deleted after running if they are associated with an object created by the script. This allows the object to be freed if the script is no longer referencing it, but it also means the timer's Period and Priority are not retained.
- SetTimer, Hotkey, GuiControl and Menu now check the minimum parameter count of functions given by reference (not just by name, as in previous versions). If the function requires too many parameters, an error is raised or ErrorLevel is set (as appropriate).
- Backward-compatible changes: If SetTimer's Label parameter is omitted and A_ThisLabel is empty, the current timer (if any) is used.
- Added Tab3 control type, solving a number of issues with Tab controls.
- Fixed GuiControl to update controls when adding/deleting tabs.
+Hiddenlosing effect on controls in a tab.
- Fixed disabled tab controls to ignore Ctrl+Tab.
Gui Tabwithout parameters to start a new radio group if applicable.
Gui Tabwith parameters already had this effect.
What is new in version 184.108.40.206:
- Fixed a theoretical issue with loading scripts from weird/very long paths.
- Ahk2Exe: Fixed Unicode in compiled scripts (broken by v1.1.23.00 release).
What is new in version 220.127.116.11:
- Fixed some issues with SetTimer Delete.
- KeyHistory's timer count erroneously included deleted timers.
- Calling KeyHistory within a thread started by a timer crashed the script if the timer had been deleted but not turned off.
- Deleting the most recently created timer prevented subsequently created timers from working unless ALL timers were deleted.
What is new in version 1.1.22.02:
Version 1.1.22.02 may contain unspecified bug fixes and features.
What is new in version 1.1.21.00:
Version 1.1.21.00 may contain unspecified bug fixes and features.
What is new in version 1.1.16.05:
Version 1.1.16.05 may contain unspecified bug fixes and features.