AutoHotkey is a free, open source macro-creation and automation software utility that allows users to automate repetitive tasks. It is driven by a custom scripting language that is aimed specifically at providing keyboard shortcuts, otherwise known as hotkeys.
AutoHotkey_H v2 started as a fork of AutoHotkey_L v2, merge branch HotKeyIt/ahkdll-v2.
- The object structure is the same as the AHK_L version.
- Remove
#UseStdLib
, and automatically load libraries from resources. - Remove the same hot string that defined in multiple threads firing at the same time.
- Remove
NULL
,CriticalObject
,Struct
,sizeof
,ObjLoad
andObjDump
- Remove
A_ZipCompressionLevel
, specify this value in the last parameter ofZipCreateBuffer
orZipCreateFile
orZipRawMemory
. DynaCall
object hasParam[index]
property, used to retrieve and set default parameters, the index is the same as the position of the argument when it is called.CryptAES
and Zip functions, parameterSize
is not needed when previous parameter is anObject
withPtr
andSize
properties.ahkExec(LPTSTR script, DWORD aThreadID = 0)
Inherits the current scope variable when aThreadID is0
Thread("Terminate", all := false)
Terminate the last or all threads, and the timer is only terminating the currentFileRead
andFileOpen
will detectUTF8-RAW
when no code page is specified.- Dynamic Library separator is
|
instead:
, eg.#include <urldownloadtovar|'http://www.website.com/script.ahk'>
,urldownloadtovar.ahk
is a library in lib folder. - Change
OnMessage(..., hwnd)
toGui.Prototype.OnMessage(Msg, Callback [, AddRemove])
, is similar toGui.Prototype.OnEvent(...)
- Object literals support quoted property name,
v := {'key':val}
- COM interface in dll module rather than in exe module.
- The com component has changed for the dll version, some methods are incorporated into IAutoHotkeyLib.
- Callback functions created through CallbackCreate that are called in other threads will be synchronized to the ahk thread through messages, which may produce unexpected results.
- Added
IAhkApi
export class for developing AHK bindings for third-party libraries, the header file is ahkapi.h. - Added
__thiscall
calling conventions supported byDllCall
andDynaCall
, eg.DllCall(func, params, 'thiscall')
,DynaCall(func, 'ret_type=@params_type')
. - Added
Decimal
class, supports arbitrary precision decimal operations,MsgBox Decimal('0.1') + Decimal('0.2') = '0.3'
, lib_mpir is required to compile, the source code of mpir - Added
Array.Prototype.Filter(callback: (value [, index]) => Boolean) => Array
- Added
Array.Prototype.FindIndex(callback: (value [, index]) => Boolean, start_index := 1) => Integer
, ifstart_index
less than 0 then reverse lookup - Added
Array.Prototype.IndexOf(val_to_find, start_index := 1) => Integer
- Added
Array.Prototype.Join(separator := ',') => String
- Added
Array.Prototype.Map(callback: (value [, index]) => Any) => Array
- Added
Array.Prototype.Sort(callback?: (a, b) => Integer) => $this
, sort in place and return and the default is random sort - Added
GuiControl.Prototype.OnMessage(Msg, Callback [, AddRemove])
, andGui.Prototype.OnMessage(Msg, Callback [, AddRemove])
, the parameter of the callback has changed,Callback(GuiObj, wParam, lParam, Msg)
,A_EventInfo
is the message posted time. - Added
Obj[Prop]
, it's same asObj.%Prop%
- Added
Obj.Get(Prop [, Default])
- Support the use of
u8str
(utf8 string) in DllCall andus
in DynaCall
ProgID: AutoHotkey2.Script
CLSID : {934B0E6A-9B50-4248-884B-BE5A9BC66B39}
The methods and properties exposed by the Lib object are defined in ahklib.idl, in the IAutoHotkeyLib
interface.
AutoHotkey is developed with Microsoft Visual Studio Community 2022, which is a free download from Microsoft.
- Get the source code.
- Open AutoHotkeyx.sln in Visual Studio.
- Select the appropriate Build and Platform.
- Build.
The project is configured in a way that allows building with Visual Studio 2012 or later, but only the 2022 toolset is regularly tested. Some newer C++ language features are used and therefore a later version of the compiler might be required.
AutoHotkey v2 can also be built and debugged in VS Code.
Requirements:
- C/C++ for Visual Studio Code. VS Code might prompt you to install this if you open a .cpp file.
- Build Tools for Visual Studio 2022 with the "Desktop development with C++" workload, or similar (some older or newer versions and different products should work).
AutoHotkeyx.vcxproj contains several combinations of build configurations. The main configurations are:
- Debug: AutoHotkey.exe in debug mode.
- Release: AutoHotkey.exe for general use.
- Self-contained: AutoHotkeySC.bin, used for compiled scripts.
Secondary configurations are:
- (mbcs): ANSI (multi-byte character set). Configurations without this suffix are Unicode.
- .dll: Builds an experimental dll for use hosting the interpreter, such as to enable the use of v1 libraries in a v2 script. See README-LIB.md.
AutoHotkeyx.vcxproj includes the following Platforms:
- Win32: for Windows 32-bit.
- x64: for Windows x64.
AutoHotkey supports Windows XP with or without service packs and Windows 2000 via an asm patch (win2kcompat.asm). Support may be removed if maintaining it becomes non-trivial. Older versions are not supported.