Fact-checked by Grok 2 weeks ago

AutoHotkey

AutoHotkey is a , open-source designed for Windows, enabling users to automate tasks through the creation of hotkeys, macros, and custom scripts ranging from simple remappings to complex applications. It allows for efficient and input , management, and text manipulation, making it a versatile tool for productivity enhancements and software automation. Developed initially by Chris Mallett, AutoHotkey was first released in 2003 as a utility for quick creation and hotkey assignments. By mid-2009, Mallett ceased active development after releasing version 1.0.48.05, prompting the community to the project into the AutoHotkey_L under Lexikos, which became the official continuation and evolved into version 1.1. In 2014, the AutoHotkey LLC was established in , , to safeguard the project's open-source nature, prevent commercialization, and ensure long-term maintenance; the domain autohotkey.com was transferred to the foundation in 2015. AutoHotkey v2.0, released in 2022, introduced significant improvements to syntax, , and while breaking with v1 to modernize the language. Key features include a simple syntax accessible to beginners yet powerful for advanced scripting, support for dynamic code execution, creation, and integration with Windows for low-level control. It is widely used for remapping keys, automating form filling, launching , and building lightweight tools, with an active contributing libraries and extensions via the official forum and repository. The software runs scripts from .ahk files and requires no compilation, facilitating and deployment on Windows systems.

Overview

Description and Purpose

AutoHotkey is a free, open-source designed specifically for the Windows operating system, enabling users to create hotkeys, macros, and automation scripts to streamline various computing tasks. It allows for the customization of keyboard and mouse inputs, making it a versatile tool for enhancing user interaction with software and hardware on Windows platforms. The primary purposes of AutoHotkey include remapping keys or buttons to suit individual preferences, automating repetitive tasks to reduce effort and prevent strain, expanding abbreviations for faster text input, and developing custom graphical user interfaces (GUIs) or menu systems tailored to specific workflows. These capabilities make it particularly useful for boosting productivity in applications such as text editors, web browsers, and games, where quick actions or sequence can significantly improve . AutoHotkey targets a broad audience, from complete beginners who require no prior programming knowledge for simple scripts to advanced users crafting complex automations. As of 2025, AutoHotkey version 2 serves as the primary and actively developed edition, offering improved usability and features, while version 1.1 remains available as a legacy option for compatibility with older scripts.

Development and Licensing

AutoHotkey was originally developed by Chris Mallett in as a of the open-source AutoIt v2 scripting utility, primarily to address limitations in hotkey support and expand automation capabilities for Windows environments. Mallett's initiative stemmed from unmet feature requests in the AutoIt community, leading him to create an independent project that emphasized customizable keyboard shortcuts and macros while retaining compatibility with AutoIt's scripting foundations. Following Mallett's reduced involvement around 2010, development transitioned to a community-driven model, with key contributions from developers like Steve Gray (known as Lexikos), who led efforts on version 2. The AutoHotkey Foundation LLC was formally established on April 24, 2014, in , , as a non-profit entity dedicated to safeguarding the project's open-source status, preventing commercialization, and coordinating ongoing maintenance. Current oversight and updates are managed by the Foundation alongside volunteer contributors through the project's repository, where issues, pull requests, and enhancements are collaboratively handled. AutoHotkey is distributed under the GNU General Public License (GPL) version 2.0, which permits users to freely use, modify, and redistribute the software while requiring derivative works to adhere to the same terms. This licensing model aligns with the project's ethos of and involvement, ensuring no restrictions hinder adoption. Funding relies entirely on voluntary donations via platforms like , directed toward operational costs such as hosting and legal fees, with no commercial sponsorship or backing reported as of 2025. A significant governance milestone occurred with the Foundation's role in stabilizing version 2 development, culminating in its official release on December 20, 2022, after years of testing.

History

Origins and Initial Releases

AutoHotkey originated in 2003 when Chris Mallett, seeking to enhance macro scripting capabilities, forked the open-source AutoIt v2 project after his proposal to integrate advanced hotkey functionality into it was declined by the AutoIt team. This evolution addressed key limitations in AutoIt, such as limited support for custom hotkeys and more flexible scripting for Windows automation tasks. The first public beta was released on November 10, 2003, marking the initial availability of the tool for users interested in keyboard shortcuts and repetitive task automation. Mallett's development focused on creating a lightweight utility that combined AutoIt's scripting syntax with expanded hotkey features, laying the foundation for a dedicated automation language. Version 1.0 was officially released in 2004, introducing core elements like custom hotkeys and simple scripting syntax that allowed users to remap keys, create macros, and automate basic interactions without deep programming knowledge. Early iterations emphasized practicality, with features such as window management commands (e.g., WinMove, WinActivate) for resizing and positioning application windows, text manipulation functions for string processing and operations, and rudimentary GUI elements via the command for building custom dialogs and controls. These additions evolved through updates, culminating in .0.48.05 in mid-2009, which refined hotkey reliability and added minor enhancements like improved support for behaviors. During the mid-2000s, the AutoHotkey user base expanded rapidly, driven by its accessibility for non-programmers in fields like , , and . The formation of dedicated community forums around 2004-2005 provided a platform for sharing scripts, , and feature requests, fostering organic growth and contributions from early adopters. By 2008, development transitioned under Steve Gray (Lexikos), who initiated the v1.1 series on July 18, 2008, to incorporate community-driven improvements while maintaining . The v1.1 series faced ongoing challenges from evolving Windows operating systems, including compatibility issues with updates that affected hotkey detection, installations, and execution in newer environments like , 10, and 11. These problems, such as hooks being uninstalled by features or UAC changes disrupting interactions, prompted iterative fixes across releases, with updates continuing through 2022 to ensure stability on modern Windows versions. This maintenance effort highlighted the tool's resilience, as community reports and developer patches addressed OS-specific quirks without major overhauls.

Evolution to Version 2

The development of AutoHotkey (v2) was announced in as a major initiative to modernize the language's syntax and enhance overall performance, addressing long-standing limitations in the v1 branch. This project, led by primary maintainer Lexikos, aimed to resolve accumulated inconsistencies that had arisen from over a decade of backward-compatible updates in v1. Key drivers for v2 included the deliberate choice of backward incompatibility to enable a cleaner, more consistent design, improved error handling through stricter syntax rules, and mitigation of cross-version compatibility issues that plagued v1, such as ambiguous command-expression duality and legacy feature burdens. These changes were motivated by the need to prioritize usability and maintainability, allowing for features like and better integration with modern Windows APIs without perpetuating v1's historical quirks. Beta releases for began in 2021, providing for testing and feedback, culminating in the full release on December 20, 2022. Following the stable launch, updates continued to refine the platform; for instance, was released on January 25, 2025, addressing critical issues such as memory out-of-bounds access during RegEx compilation, improper restoration of externally released modifiers post-Send, and suppression of InputHook events by dialog boxes. In tandem with v2's release, v1.1 was designated as legacy in , with no new features added thereafter, though critical fixes remained possible via contributions. This shift encouraged , supported by the open-source maintenance model. Development of v2.1 began after the v2.0 stable release, with alpha versions introducing further enhancements; as of November 2025, v2.1 remains in alpha stage. The transition to has led to increased adoption, facilitated by comprehensive enhancements to the official and the availability of community-developed tools, such as automated v1-to- script converters that handle syntax translations for common patterns. These resources have eased the shift for users, promoting broader use of 's improved capabilities in tasks.

Core Features

Hotkeys and Macros

Hotkeys in AutoHotkey are defined using a simple syntax consisting of a key combination followed by double colons (::) and the action to perform, such as ^j:: to trigger an action on pressing +J. This notation allows users to assign custom behaviors to shortcuts, buttons, or inputs, enabling rapid of tasks. AutoHotkey supports standard modifiers to combine keys into complex hotkeys, including ^ for , ! for , + for Shift, and # for the . For instance, ^+c:: defines a hotkey for +Shift+C, providing flexibility for creating shortcuts that align with user preferences or application-specific needs. Macros in AutoHotkey are sequences of simulated inputs or commands executed upon hotkey activation, typically involving keystrokes, mouse movements, or program launches to automate repetitive processes. These macros can replicate user interactions across windows, such as filling forms or navigating interfaces, by chaining actions without manual intervention. Advanced hotkey types include context-sensitive variants, which activate only under specific conditions using directives like #HotIf to limit functionality to a particular window title or class. For example, #HotIf WinActive("ahk_class Notepad") ensures a hotkey applies solely when Notepad is active, preventing conflicts in multi-application environments. Key remapping, such as a::b, permanently substitutes one key press for another, useful for ergonomic adjustments or correcting hardware limitations. Timed delays can be incorporated into macros via the Sleep function, allowing pauses between actions to synchronize with application response times. Built-in functions facilitate macro implementation: the Send function simulates keystrokes and text input to the active window, supporting modes like {Text} for faster, more reliable execution. The Click function handles mouse events, such as clicking at specified coordinates or holding buttons, and automatically accounts for left/right button swapping in system settings. For launching external programs, the Run function executes files or URLs, optionally waiting for completion with RunWait and specifying working directories to ensure proper operation. Performance in hotkey and macro execution relies on low-level keyboard and mouse hooks, which intercept inputs at the system level for low latency and minimal interference with other applications. These hooks enable efficient key blocking or redirection without relying on higher-level polling, reducing CPU overhead and ensuring responsive automation even during intensive tasks.

Scripting Capabilities

AutoHotkey's scripting capabilities enable the creation of complex automation logic through a flexible, imperative programming paradigm that supports data manipulation, conditional execution, and interaction with the operating system. These features allow users to build scripts that go beyond simple input remapping, incorporating algorithmic decision-making and resource management to handle dynamic tasks efficiently. The language emphasizes practicality for Windows automation, drawing from influences like BASIC and AutoIt while introducing modern object-oriented elements in version 2. Variables in AutoHotkey employ dynamic typing, permitting them to hold diverse types such as integers, strings, booleans, or objects without explicit declaration, which facilitates and flexible handling. Expressions combine variables, literals, and operators to compute values, supporting , concatenation, logical operations, and calls for evaluating conditions or transforming . Arrays, implemented as specialized objects, provide indexed collections for storing ordered lists of values, enabling efficient and manipulation of sequential like file lists or user inputs. Objects extend this further, serving as associative containers with properties and methods for structured representation, such as key-value pairs in configurations or hierarchical information in application states. Control structures in AutoHotkey provide essential tools for program flow, including the If statement for executing code blocks based on expressions, paired with Else for alternative paths when conditions fail. Loops such as and While enable repetitive execution, with supporting fixed iterations, file parsing, or indefinite cycles until a Break condition, and While continuing as long as an expression remains true, ideal for monitoring system states or processing datasets. Functions promote modular code by encapsulating reusable logic, accepting parameters, returning values, and supporting local variables to avoid global pollution, thus enhancing maintainability for larger automation projects. Interactions with files and the system allow scripts to perform operations and administrative tasks. File handling utilizes the object for reading and writing text or binary data, supporting methods to open streams, append content, or retrieve file properties, which is crucial for logging, configuration management, or data exchange. Registry access through functions like RegRead and RegWrite enables querying and modifying keys, facilitating persistence of settings or system tweaks without external tools. Process management includes capabilities to launch applications via Run, monitor existence with ProcessExist, or terminate instances, providing oversight of running programs for automation workflows like or resource cleanup. GUI creation in AutoHotkey leverages the object to construct custom windows, incorporating built-in controls such as buttons, text fields, dropdown lists, and checkboxes for interactive dialogs that gather user input or display status. Menus can be attached to windows or the system tray using the Menu object, supporting hierarchical submenus and event-driven actions for user-friendly interfaces in tools like panels or progress monitors. These elements allow scripts to produce standalone applications with native Windows appearance, enhancing usability for end-user utilities. Error handling in AutoHotkey features the Try-Catch mechanism, where Try encloses potentially failing code and Catch intercepts exceptions, allowing graceful recovery or logging without script termination, a significant improvement over version 1's directive-based approach. tools include ListLines, which displays the most recent executed lines in , aiding in tracing execution paths and identifying issues during development. Additional options like breakpoints in compatible editors further support iterative refinement of scripts.

Syntax and Usage

Basic Syntax Elements

AutoHotkey v2 scripts are structured as plain text files with a .ahk extension, consisting of directives, hotkeys, hotstrings, functions, and expressions that are executed sequentially by the interpreter. Directives, which begin with #, appear at the top of the script and configure runtime behavior; for instance, #SingleInstance specifies whether multiple instances of the script can run simultaneously, with options like Force to replace existing instances or Ignore to skip new launches. The #NoEnv directive, which prevents automatic use of environment variables, is obsolete in v2 as this isolation is the default behavior. Hotstrings, used for text expansion, follow a simple ::abbreviation::replacement syntax, such as ::btw::by the way, triggering automatic replacement upon typing the abbreviation followed by a trigger character like space or punctuation. Function calls form the core instructions, such as MsgBox("Hello, World!") to display a message dialog. Since v2 uses expression syntax throughout, parentheses enclose arguments and enable evaluation as needed. Comments in AutoHotkey are denoted by a (;) prefixed to a line or placed after code on the same line, allowing explanatory notes that the interpreter ignores; for example, Send "text" ; This sends keystrokes. Multi-line comments use /* at the start and */ at the end, though single-line semicolons are more common for simplicity. Indentation enhances readability by using spaces or tabs to nest code blocks within control structures like if statements, though it has no functional impact on execution—scripts run correctly regardless of spacing. AutoHotkey v2 supports standard operators for arithmetic operations, including + for , - for , * for , and / for , which operate on numeric values within expressions; for example, result := (5 + 3) * 2 evaluates to 16. String concatenation uses the . operator to join text, as in greeting := "Hello" . " " . "World", producing "Hello World" without spaces unless explicitly added. Comparison operators include == for exact (case-sensitive for strings) and != for inequality, enabling conditional logic like if (x == y) to check equivalence, with == handling binary zeros in strings unlike other operators that truncate at null characters. Built-in functions provide essential utilities for common tasks; StrLen(String) returns the character count of a string, such as StrLen("AutoHotkey") yielding 9. RegExMatch(Haystack, NeedleRegEx [, &OutputVarPos?, StartingPos]) searches for a pattern in a string, returning the starting position of the first match or 0 if none found, useful for pattern validation like RegExMatch("[email protected]", "^[\w.-]+@[\w.-]+.\w+$"). These functions are invoked directly in expressions or commands, promoting concise scripting. Scripts execute by launching the .ahk file with AutoHotkey.exe, either via or command line, interpreting lines from top to bottom until completion or interruption. For distribution without requiring the interpreter, Ahk2Exe compiles .ahk scripts into standalone .exe files, bundling the necessary runtime while optionally including or icons for customization. This model supports both interactive development and deployed .

Key Differences in Version 2

AutoHotkey version 2 introduces a unified expression-based syntax, where all legacy commands from have been converted to equivalent functions, removing the previous distinction between command mode and expression mode. In , scripts could mix imperative commands (like Send, text) with expressions (enclosed in % or ()), leading to inconsistencies; version 2 requires function calls for all operations, such as SendText("text"), promoting a more predictable and modern . This shift uses the => operator for defining functions directly in hotkeys and other contexts, for example: ^j::MsgBox("Hello"), which replaces the style of ^j:: MsgBox, Hello. Version 2 enhances capabilities by providing native support for classes and methods, eliminating the need for workarounds like prototype-based objects or manual function binding. Users can now define classes with properties, methods, and , such as:
autohotkey
class MyClass {
    value := 0
    Increment() {
        this.value++
    }
}
obj := MyClass()
obj.Increment()
This built-in support allows for more structured code, replacing ad-hoc simulations in that relied on associative arrays and custom functions. String handling in version 2 mandates that all literal strings be enclosed in double or single quotes to differentiate them from variable names, a departure from where unquoted words were automatically treated as strings. For instance, allowed MsgBox, Hello world, but version 2 requires MsgBox("Hello world"); unquoted words like Hello are interpreted as variables, potentially causing errors if undefined. Escaping rules have been streamlined: double-quoted strings use ` for escapes (e.g., `n for ), while single-quoted strings treat double quotes literally without escaping, improving readability for complex literals. Several backward incompatibilities affect script migration, notably in commands like Send, which in version 2 functions as Send() or SendText() and defaults to text mode without implicit key translation, requiring explicit mode specification via SetSendMode("Event") or similar for behaviors like version 1's default raw input. Additionally, version 2 eliminates implicit line continuation sections; multi-line expressions or function parameters must use the explicit continuation character ` at line ends, preventing accidental breaks in version 1-style code like unbracketed command lists. These changes ensure stricter parsing but necessitate updates for legacy scripts. To facilitate migration, AutoHotkey version 2 includes official documentation detailing syntax mappings and a community-endorsed integrated into the since the 2022 release, with enhancements through 2025 updates for handling common patterns. The processes scripts into v2-compatible code, automating much of the function conversion and quoting adjustments, though manual review is recommended for complex logic. Comprehensive guides in the official docs cover strategies, ensuring smoother transitions for existing users.

Practical Examples

Beginner Scripts

Beginner scripts in AutoHotkey provide an accessible for users to automate repetitive tasks using basic hotkeys, hotstrings, and commands. These scripts typically consist of a few lines of code that remap keys, expand abbreviations, execute simple sequences, or manage windows, demonstrating core functionality without requiring advanced programming knowledge. By following the official documentation, users can create, test, and modify these scripts to suit personal workflows.

Key Remapping: Swapping CapsLock and Ctrl Keys

A common beginner script remaps the CapsLock key to function as the Control (Ctrl) key, while swapping the original Ctrl to CapsLock, improving ergonomics for keyboard-intensive tasks. This leverages AutoHotkey's remapping syntax, where a key followed by :: sends another key's input. Here is the script:
CapsLock::Ctrl
Ctrl::CapsLock
Line-by-line breakdown:
  • CapsLock::Ctrl: This line remaps every press of the CapsLock key to send a Ctrl key press instead, effectively replacing its toggle function with modifier behavior.
  • Ctrl::CapsLock: This reciprocal line remaps the Ctrl key to send a CapsLock toggle, completing the swap.
Expected output: After running the script, pressing the physical CapsLock key will act as Ctrl (e.g., for shortcuts like Ctrl+C to copy), and pressing the physical Ctrl key will toggle uppercase input. The original CapsLock light may not illuminate correctly due to the hardware-level remapping limitation. Testing instructions: Save the code as a .ahk file, right-click it, and select "Run Script" from the AutoHotkey context menu. Open a text editor like Notepad, type some text, and test Ctrl+C (using physical CapsLock) to copy; verify by pasting with Ctrl+V (using physical Ctrl, which now toggles CapsLock—use Shift for uppercase if needed). Reload the script via its tray icon to apply changes, or exit to revert.

Text Expansion Hotstring: Automating Typing with ::btw::

Hotstrings enable automatic text replacement as you type, ideal for expanding s in emails or documents. The syntax ::abbreviation::replacement triggers upon typing the abbreviation followed by a or . Here is the script:
::btw::[by the way](/page/By_the_Way)
Line-by-line breakdown:
  • ::btw::[by the way](/page/By_the_Way): This defines "btw" as a hotstring that, when followed by an ending character like or Enter, immediately replaces itself with "" and positions the cursor after the . No ending character is required if the * option is added (e.g., :*btw::[by the way](/page/By_the_Way)), but the basic form suffices for most uses.
Expected output: Typing "btw" followed by a space in any text field will delete "btw " and insert " ", allowing seamless continuation. The replacement occurs instantly without interrupting typing flow. Testing instructions: Save and run the script as a .ahk file. Open a or browser text field, type "I was thinking, "—observe " " appear automatically. To add more hotstrings, append lines like ::ttyl::talk to you later before saving and reloading. Pause the script from the tray icon to disable temporarily.

Simple Macro: Hotkey to Open a Program and Type a

A macro combines a hotkey trigger with commands to launch an application and input text, streamlining routine actions like starting a daily . This uses the Hotkey function for assignment and Run with Send for execution. Here is the script:
F1::{
    Run "notepad.exe"
    WinWait "Untitled - Notepad"
    Send "Hello, this is an automated phrase.{Enter}"
}
Line-by-line breakdown:
  • F1::{: Assigns the F1 key as a hotkey, enclosing the actions in curly braces for the block.
  • Run "notepad.exe": Launches Notepad; the quotes handle spaces in paths if needed for other programs.
  • WinWait "Untitled - Notepad": Pauses execution until the Notepad window title appears, ensuring text is sent to the correct window.
  • Send "Hello, this is an automated phrase.{Enter}": Types the specified text into the active window and presses Enter; curly braces escape special characters like Enter.
  • }: Closes the hotkey block.
Expected output: Pressing F1 opens a new window with "Hello, this is an automated phrase." followed by a , ready for further input. If is already open, it activates an existing instance. Testing instructions: Save and run the .ahk file. Press F1 to trigger; confirm opens and types the phrase. Modify the path (e.g., Run "C:\Program Files\...\") for other apps, save, and reload via tray icon. Use the script's main window (right-click tray icon > Open) to view errors if the window wait fails.

Window Management: Minimizing All Windows on Key Press

This script assigns a hotkey to minimize every visible , mimicking the Windows+D for quick access. It iterates over windows using WinGetList and WinMinimize. Here is the :
F2:: {
    for hwnd in WinGetList() {
        try WinMinimize "ahk_id " hwnd
    }
    WinActivate "ahk_class Progman"  ; Optional: Focus desktop after
}
Line-by-line breakdown:
  • F2::{: Defines F2 as the hotkey for the minimization routine.
  • for hwnd in WinGetList() {: Loops over all top-level windows retrieved by WinGetList.
  • try WinMinimize "ahk_id " hwnd: Minimizes each window by its handle; try catches cases where minimization fails (e.g., non-minimizable windows).
  • WinActivate "ahk_class Progman": Optionally activates the desktop (Progman class) after minimization for a clean view; this line can be omitted if not needed.
  • }: Ends the loop and hotkey block.
Expected output: Pressing F2 hides all open windows to the , revealing the . The loop ensures comprehensive minimization, though some system windows (e.g., ) remain unaffected. Testing instructions: Save and run the script. Open multiple windows (e.g., , ), press F2, and verify all minimize. Press F2 again if adjusted for toggle, or use Windows+D to restore. Edit the hotkey (e.g., to #m:: for Win+M) and reload to test variations; monitor the tray icon for script status.

Advanced Automation Tasks

Advanced automation in AutoHotkey v2 often involves combining scripting constructs such as , regular expressions, arrays, functions, and COM interfaces to handle complex workflows that enhance productivity across applications. These tasks go beyond basic hotkeys by integrating multiple features to process data, interact with system components, and manage concurrent operations efficiently.

Clipboard Automation

One common advanced task is automating the formatting of text copied to the , which can be achieved using regular expressions (RegEx) for and for iterative processing. This approach allows to clean, transform, or standardize pasted content before insertion, such as removing unwanted characters or reformatting dates in bulk. For instance, a script might capture clipboard text, through lines to apply RegEx replacements, and then paste the modified version. The Clipboard property handles access to the clipboard contents, while RegExReplace performs substitutions based on defined patterns. A representative example script demonstrates this by formatting a list of email addresses extracted from copied text, removing duplicates and standardizing the format using a loop:
autohotkey
#HotIf WinActive("ahk_exe notepad.exe")  ; Trigger only in Notepad for example
^!v::  ; Ctrl+Alt+V hotkey
{
    original := A_Clipboard
    lines := StrSplit(original, "`n", "`r")  ; Split into array of lines
    formatted := ""
    seen := Map()  ; Associative array to track unique emails
    
    for line in lines {
        if RegExMatch(line, "i)^[\w\.-]+@[\w\.-]+\.\w+$", &match) {  ; RegEx for email pattern
            email := match[0]
            if !seen.Has(email) {
                seen[email] := true
                formatted .= email "`n"
            }
        }
    }
    
    A_Clipboard := formatted
    Send("^v")  ; Paste the formatted text
}
This script uses an array (lines) from StrSplit to iterate via a for loop, applies a RegEx match to validate emails, and employs a Map to avoid duplicates, ensuring efficient processing of larger texts.

GUI Application: Custom Tray Menu

AutoHotkey enables the creation of custom tray menus to provide quick access to system controls, integrating GUI elements with native Windows APIs for tasks like volume adjustment. The Menu object's Tray submenu allows adding items that trigger functions upon selection, such as incrementing or decrementing audio levels without disrupting workflow. This is particularly useful for multimedia automation, where users can right-click the script's tray icon to access controls. The SoundSet function adjusts volume levels programmatically, supporting relative changes for intuitive operation. An example script sets up a tray menu with volume up/down options:
autohotkey
#Requires AutoHotkey v2.0

tray := A_TrayMenu
tray.Delete()  ; Clear default menu
tray.Add("Volume Up", (*) => SoundSet("+5"))  ; Increase by 5%
tray.Add("Volume Down", (*) => SoundSet("-5"))  ; Decrease by 5%
tray.Add("Mute", (*) => SoundSet("Mute"))
tray.Default := "Volume Up"  ; Highlight first item
This configuration adds menu items that call SoundSet with volume modifiers, allowing seamless adjustment via the system tray. For more complex GUIs, sliders can be embedded in a separate window linked to the tray menu.

File Processing

Batch file renaming leverages arrays and functions to process multiple files based on patterns, enabling bulk operations like sequential numbering or metadata extraction. The Loop Files directive iterates over files matching a pattern, while arrays store file paths and new names for validation before renaming via FileMove. Custom functions can encapsulate logic for pattern application, such as prefixing names with dates or indices, improving script modularity. Consider this function-based example for renaming image files in a directory to include a sequential number:
autohotkey
RenameImages(dir) {
    files := []
    Loop Files, dir "\*.jpg" {
        files.Push(A_LoopFileFullPath)
    }
    
    index := 1
    for file in files {
        newName := "Image_" . Format("{:03d}", index) . ".jpg"  ; Pattern: Image_001.jpg
        FileMove(file, dir "\" . newName, true)  ; Overwrite if exists
        index++
    }
    MsgBox("Renaming complete for " . files.Length . " files.")
}

F1::RenameImages("C:\Images")  ; Hotkey to run on specific directory
Here, an (files) collects paths during the , and a for applies the renaming pattern using Format for zero-padded numbers, ensuring consistent output.

Integration Example: Automating Browser Actions

Integrating AutoHotkey with browsers via objects facilitates by automating navigation, form submission, and data extraction without relying on UI automation. The ComObject function creates interfaces to applications like , allowing scripts to query the DOM for elements matching patterns. This method supports tasks such as logging into sites, retrieving table data into arrays, and exporting to files, all within a single script. A basic example scrapes a table from an IE page:
autohotkey
F2:: {
    ie := ComObject("InternetExplorer.Application")
    ie.Visible := true
    ie.Navigate("https://example.com/data")
    while (ie.Busy || ie.ReadyState != 4)
        [Sleep](/page/Sleep)(100)
    
    doc := ie.Document
    [table](/page/Table) := doc.getElementsByTagName("table")[0]
    rows := []
    for row in [table](/page/Table).rows {
        cells := []
        for [cell](/page/Cell) in row.cells {
            cells.[Push](/page/Push)(cell.innerText)
        }
        rows.[Push](/page/Push)(cells)
    }
    
    ; Output first row as example
    for [cell](/page/Cell) in rows[0] {
        OutputDebug([cell](/page/Cell))
    }
    ie.Quit()
}
This script launches , waits for page load, extracts table rows into a nested using properties like innerText, and logs data via OutputDebug for processing. For modern browsers, extensions like can be interfaced similarly.

Performance Tips

To manage concurrent tasks effectively, the #MaxThreadsPerHotkey directive limits or expands the number of simultaneous threads per hotkey (default 1, max 255), preventing overload while allowing overlapping executions for responsive . Setting it higher than 1 enables , such as multiple file operations or updates, but requires careful resource monitoring to avoid degradation. For example, #MaxThreadsPerHotkey 2 permits a hotkey to launch a second instance if the first is still running, ideal for non-blocking tasks like background scraping. AutoHotkey runs scripts at full speed by default.

Community and Extensions

User-Contributed Libraries

The AutoHotkey community has developed a wide array of user-contributed libraries that extend the scripting language's capabilities beyond its core features, enabling advanced , handling, and with external systems. These libraries are typically written in AutoHotkey script syntax and distributed as .ahk files, allowing users to incorporate specialized functions into their projects. Among the most popular libraries is AutoHotkey_H, an enhanced of AutoHotkey that provides additional functionality, including true multi-threading via the NewThread() function ( only) and support for resource libraries embedded in executables. Another key library is Gdip, which offers comprehensive GDI+ interaction for graphics manipulation, such as drawing images, handling bitmaps, and rendering visual elements in scripts. For parsing, the AutoHotkey-JSON library facilitates encoding and decoding of , supporting complex object serialization essential for web APIs and configuration files. User-contributed libraries are primarily distributed through repositories, where developers maintain open-source code with version control and issue tracking, and the official AutoHotkey forum's scripts and functions section, which hosts downloadable archives and discussion threads. Integration occurs seamlessly via the #Include directive, which embeds the contents of an external .ahk file into the main script at compile or execution time, enabling modular code reuse without altering the core AutoHotkey installation. Notable examples include .ahk, a library for Microsoft Active Accessibility (MSAA) that allows scripts to query and interact with UI elements, windows, and controls for automation tasks like screen reading or form filling. WebSocket libraries, such as WebSocket.ahk, provide class-based implementations for real-time bidirectional communication, supporting applications like live data streaming or chat bots integrated with web services. Following the release of AutoHotkey in 2022, user-contributed libraries experienced significant growth, with many projects updating to accommodate the new syntax, such as object-oriented features and stricter typing. By 2025, adaptations continued, including v2-compatible versions of graphics and accessibility tools, reflecting ongoing community efforts to maintain while leveraging v2 enhancements.

Support Resources and Development

The official for AutoHotkey is hosted at autohotkey.com, providing comprehensive guides for both version 1.1 and version 2.0, including syntax references, command details, and examples for scripting tasks. The v2 changelog, maintained on the same site, tracks updates such as bug fixes, new features, and compatibility improvements, with the latest release (v2.0.19 in January 2025) addressing issues like memory access errors and handling to enhance overall stability. While official videos are not directly provided, the includes structured text-based that cover , basic scripting, and advanced topics, supplemented by community-produced video series on platforms like for . Community support revolves around several key hubs that facilitate discussion, troubleshooting, and resource sharing. The AutoHotkey forums, established around the project's early years in 2004, serve as the primary platform for user queries, script feedback, and announcements, with dedicated sections for v1 and discussions. The subreddit r/AutoHotkey offers a more informal space for quick advice, code reviews, and sharing productivity tips, attracting thousands of members for real-time interaction. Additionally, GitHub issues on the official AutoHotkey repository allow users to report bugs, suggest enhancements, and track development progress through threaded conversations. Contributions to AutoHotkey occur through structured processes that encourage both core development and . For codebase, users submit pull requests via , following guidelines outlined in community threads that emphasize code quality, testing, and compatibility with existing features; accepted contributions have included fixes for edge cases in v2 releases. Script sharing is handled in dedicated forum sections and repositories, where users post reusable code snippets, libraries, and tools for and adoption, fostering collaborative improvement without altering the main project. The AutoHotkey community engages through virtual events that have shifted online since 2020, including regular webinars and annual meetups focused on scripting techniques, updates, and user projects, often streamed on YouTube for broader access. In 2025, development priorities centered on v2 stability, with updates like v2.0.19 emphasizing bug resolutions and performance refinements to solidify it as the recommended version for new users. Learning paths for AutoHotkey range from structured beginner resources to advanced challenges, enabling progressive skill development. Official beginner guides start with fundamentals like creating hotkeys and hotstrings, progressing through the documentation's tutorial sections to cover variables, loops, and GUI elements. For intermediate and advanced users, community-driven paths include forum-based scripting challenges, GitHub example repositories, and video playlists that explore complex automation, object-oriented scripting, and integration with Windows APIs, helping users tackle real-world tasks like workflow optimization.

Security and Risks

Association with Malware

AutoHotkey has been increasingly associated with malicious activities, particularly in the deployment of and loggers, as documented in cybersecurity reports from 2020 to 2025. Adversaries leverage its capabilities for stealthy key simulation and to execute payloads without triggering traditional detection mechanisms. For instance, reports from firms like and The Hacker News highlight its use in chains for remote trojans (RATs) and data-stealing during this period. A notable incident involves the DarkGate malware-as-a-service (MaaS) operation, which transitioned to incorporating AutoHotkey scripts in its attack vectors starting in 2024. This shift allowed attackers to deliver payloads through HTML-based lures and exploit vulnerabilities like CVE-2023-36025 for initial access, evading protections. Earlier, in 2021, an ongoing campaign relied heavily on AutoHotkey to distribute multiple RATs, including NetWire and AsyncRAT, targeting various sectors. Additionally, in 2020, credential-stealing banking written in AutoHotkey targeted financial institutions in the and . In 2025, threat actors have used AutoHotkey in combination with to deliver through fake CAPTCHA pages in campaigns. The appeal of AutoHotkey to attackers stems from its straightforward scripting syntax, which lowers the technical barrier for creating custom malicious tools, and its ability to compile scripts into standalone executables that obscure their intent. This compilation feature enables binaries to blend with legitimate software, facilitating the simulation of user inputs for tasks like downloading additional or exfiltrating data. According to MITRE ATT&CK, adversaries have exploited these traits to implement modular components, such as keyloggers, within broader attack frameworks. Detection poses significant challenges because AutoHotkey's legitimate automation functions, including hotkey remapping, closely resemble malicious behaviors like keystroke capture in keyloggers, making it difficult to develop reliable antivirus signatures without high false-positive rates. Cybersecurity analyses note that this overlap leads to evasive tactics, where malware authors rename executables or embed scripts in benign-looking files to bypass static analysis tools.

Mitigation Strategies

To securely use AutoHotkey, users and developers should download the software exclusively from the official website and verify the file's SHA256 hash against the provided value to confirm its integrity and prevent tampering. Before incorporating external files via the #Include directive, thoroughly review their sources, scan them with tools like , and limit inclusions to trusted repositories to avoid embedding malicious code. Running scripts in sandboxed environments, such as virtual machines or tools like , isolates potential threats and prevents system-wide impact from unverified code. Antivirus integration enhances protection; configure software like Microsoft Defender to whitelist official AutoHotkey executables while enabling real-time scanning of .ahk files to detect anomalies before execution. For added security, perform on-demand scans of scripts using multiple engines via to identify false positives or hidden threats common in scripting languages. In secure coding, minimize privileges by avoiding unnecessary elevation to administrator mode, as this reduces the scope of damage if a script is compromised; instead, use (UAC) prompts judiciously for required actions. Obfuscation of code should be applied only when essential for protection, as it can obscure malicious intent and complicate antivirus detection. For compiled executables, apply digital signatures using tools like Signtool with a code-signing to enable verification of authenticity and block unsigned or altered binaries. Community tools aid verification; for instance, use syntax checkers integrated into the AutoHotkey editor or third-party analyzers to validate scripts without full execution, catching errors that might indicate tampering. In organizational settings, best practices include deployment via controlled channels with application whitelisting and regular patching, while auditing tools like can help identify unauthorized installations and monitor for suspicious behaviors such as UAC bypass attempts. Policies should enforce script approval workflows, restrict execution to signed files, and integrate with endpoint detection to block untrusted automation.

References

  1. [1]
    AutoHotkey
    AutoHotkey is a free, open-source scripting language for Windows that allows users to easily create small to complex scripts for all kinds of tasks.How to Install AutoHotkeyBeginner Tutorial
  2. [2]
    AutoHotkey - macro-creation and automation-oriented ... - GitHub
    AutoHotkey is a free, open source macro-creation and automation software utility that allows users to automate repetitive tasks.
  3. [3]
    The AutoHotkey Foundation : Our History
    AutoHotkey started in 2003. The AutoHotkey Foundation LLC was created in 2014, and the domain autohotkey.com was handed over in 2015.
  4. [4]
    The AutoHotkey Foundation
    The AutoHotkey Foundation LLC was founded on April 24th 2014 in Indiana, USA. It was created in order to prevent monetization, ensure the continuing existence ...
  5. [5]
    AutoHotkey v2
    AutoHotkey v2 aims to improve the usability and convenience of the language and command set by sacrificing backward compatibility.Changes from v1.1 to v2.0 · Online Documentation · Using the Program
  6. [6]
    Using the Program | AutoHotkey v2
    AutoHotkey needs a script (.ahk file) to run. Create scripts in text editors or via the Dash, and run them by double-clicking or using the command line.<|control11|><|separator|>
  7. [7]
    Beginner Tutorial | AutoHotkey v2
    Learn how to download and install AutoHotkey, to create a script, to use hotkeys and hotstrings, to send keystrokes, to run programs, etc.
  8. [8]
    Changes & New Features | AutoHotkey v2
    2.0.19 - January 25, 2025 ... Fixed memory out-of-bounds access during RegEx compilation. Fixed externally-released modifiers to not be "restored" post-Send.
  9. [9]
    Download and install AutoHotkey
    No information is available for this page. · Learn why
  10. [10]
    Compare AutoHotkey and AutoIt - ComputorEdge
    ... AutoIt community causing Mallett to start writing his own version of the then open source AutoIt—calling it AutoHotkey. The name AutoHotkey demonstrates the ...
  11. [11]
    AutoIt or AutoHotkey? - AdvancedCase
    May 23, 2013 · In the beginning there was AutoIt and it was good. But lacking. Lacking enough for Chris Mallett to break away and develop AutoHotkey as an ...Missing: fork | Show results with:fork
  12. [12]
    Software License - AutoHotkey v2
    The GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.
  13. [13]
    AutoHotkey From Fork to Powerful Tool - YouTube
    Aug 19, 2025 · The project began in 2003 when Chris Mallett forked AutoIt to create AutoHotkey due to unmet feature requests. ... development, marking a pivotal ...
  14. [14]
  15. [15]
    AutoHotkey - Simple English Wikipedia, the free encyclopedia
    AutoHotkey. Developer(s), Chris Mallett, Steve Gray. Initial release, November 10, 2003; 21 years ago (2003-11-10) (Chris Mallet) July 18, 2008; 17 years ...
  16. [16]
    Quick Reference | AutoHotkey v1
    Version 1.1.37.02 · https://www.autohotkey.com. ©2003 Chris Mallett, portions ©AutoIt Team and the AHK community. Software License: GNU General Public ...Beginner Tutorial · Using the Program · Edit · Frequently Asked Questions<|control11|><|separator|>
  17. [17]
    Gui - Syntax & Usage | AutoHotkey v1
    The Gui command creates and manages windows and controls. Such windows can be used as data entry forms or custom user interfaces.
  18. [18]
    Archived Changes | AutoHotkey v1
    This document contains a history of changes made within the original branch of AutoHotkey development, by Chris Mallett. For newer changes, see Changes ...Missing: origins evolution
  19. [19]
    Index page - AutoHotkey Community
    Discussion about the AutoHotkey Foundation and this website. 146 Topics: 4262 Posts: Last post Re: News regarding tidbit by Bugz000 Mon Oct 27, 2025 3:50 pm.Scripts and Functions (v1) · AutoHotkey (v2, current version) · Forum · Tutorials (v2)
  20. [20]
    Changes & New Features | AutoHotkey v1
    Fixed garbage error text when the main script file cannot be opened. Removed "Error at line 0" from error messages which appear before the first line is read.
  21. [21]
    After Windows 10 update AutoHotkey not working
    May 19, 2023 · I tried every combinations with version v1.1.36.02 and v2 but still the same error pops up. AutoHotKey did not work after some process slowed ...
  22. [22]
  23. [23]
    Changes from v1.1 to v2.0 | AutoHotkey v2
    Removed all legacy If statements, leaving only if expression, which never requires parentheses (but allows them, as in any expression).Missing: migration tools
  24. [24]
    AutoHotkey v2 Official Release Announcement - Q&A
    The best extension for v1 is actually Autohotkey Plus Plus. The best one for v2 is Autohotkey Language Support, I've made a video about it if you're interested.
  25. [25]
    None
    Nothing is retrieved...<|control11|><|separator|>
  26. [26]
    v1 -> v2 Script Converter - AutoHotkey Community
    Nov 30, 2016 · This script will attempt to convert a script written in AHK v1 to the correct syntax so that it works in AHK v2.Missing: adoption increase
  27. [27]
    Hotkeys (Mouse, Controller and Keyboard Shortcuts) - AutoHotkey
    Learn details about hotkeys in general, modifier symbols, context-sensitive hotkeys, custom combinations, mouse wheel hotkeys, function hotkeys, etc.Missing: primary | Show results with:primary
  28. [28]
    List of Keys (Keyboard, Mouse and Controller) | AutoHotkey v1
    This page lists all mouse buttons, keyboard keys and controller buttons which can be used for hotkeys and key-specific commands/functions.AutoHotkey Script Showcase · Key List · InstallKeybdHook<|control11|><|separator|>
  29. [29]
    Creating a Keyboard Macro or Mouse Macro | AutoHotkey v1
    The most common activity of a macro is to send simulated keystrokes and mouse clicks to one or more windows. Such windows respond to each keystroke and mouse ...
  30. [30]
    #If - Syntax & Usage | AutoHotkey v1
    The #If directive creates context-sensitive hotkeys and hotstrings. Such hotkeys perform a different action (or none at all) depending on the result of an ...
  31. [31]
    Remapping Keys (Keyboard, Mouse and Controller) | AutoHotkey v1
    Free keyboard remapper that can also remap mouse and controller buttons. It can also automate repetitive tasks by sending keystrokes & mouse clicks.
  32. [32]
    Send / SendRaw / SendInput / SendPlay / SendEvent - AutoHotkey
    The Send, SendRaw, SendInput, SendPlay and SendEvent commands send simulated keystrokes and mouse clicks to the active window.Missing: macros | Show results with:macros
  33. [33]
    None
    Nothing is retrieved...<|separator|>
  34. [34]
    None
    Nothing is retrieved...<|separator|>
  35. [35]
    None
    Nothing is retrieved...<|control11|><|separator|>
  36. [36]
    Scripting Language | AutoHotkey v2
    AutoHotkey v2 uses a custom language with instructions for the program, similar to other languages, but with unique strengths and pitfalls.Expressions · Control Flow Statements · Structure Of A ScriptMissing: system GUI
  37. [37]
    Variables and Expressions - Definition & Usage | AutoHotkey v2
    Learn details about variables, expressions, operators, built-in variables and capacity and memory of variables.<|separator|>
  38. [38]
    Objects - Definition & Usage | AutoHotkey v2
    AutoHotkey uses a basic reference counting mechanism to automatically free the resources used by an object when it is no longer referenced by the script.
  39. [39]
    Array Object - Methods & Properties | AutoHotkey v2
    An Array object contains a list of values, accessed by index. Methods include Clone, Delete, Get, InsertAt, Pop, Push, and RemoveAt. Properties include Length, ...
  40. [40]
    If - Syntax & Usage | AutoHotkey v2
    The If statement specifies one or more statements to execute if an expression evaluates to true.
  41. [41]
    Loop - Syntax & Usage | AutoHotkey v2
    The Loop statement performs one or more statements repeatedly: either the specified number of times or until Break is encountered.
  42. [42]
    None
    Nothing is retrieved...<|separator|>
  43. [43]
    RegRead - Syntax & Usage | AutoHotkey v2
    Reads a value from the registry and store it in TestValue . TestValue := RegRead("HKEY_LOCAL_MACHINE\Software\SomeApplication", "TestValue"). Retrieves and ...Missing: management | Show results with:management
  44. [44]
    RegWrite - Syntax & Usage | AutoHotkey v2
    To read and write entries from the 64-bit sections of the registry in a 32-bit script or vice versa, use SetRegView. Related. RegCreateKey, RegDelete, ...
  45. [45]
    None
    Nothing is retrieved...<|separator|>
  46. [46]
    None
    Nothing is retrieved...<|separator|>
  47. [47]
    GUI Control Types - Syntax & Usage | AutoHotkey v2
    GUI control types are elements of interaction which can be added to a GUI window using the Gui object's Add method.
  48. [48]
    None
    Nothing is retrieved...<|separator|>
  49. [49]
    None
    Nothing is retrieved...<|control11|><|separator|>
  50. [50]
    Scripts - Definition & Usage | AutoHotkey v2
    Learn details about scripts in general, splitting long lines, compiling a script, passing command line parameters, codepage and debugging.Splitting A Long Line Into A... · Running The Compiler · Passing Command Line...
  51. [51]
    #SingleInstance - Syntax & Usage | AutoHotkey v2
    The #SingleInstance directive determines whether a script is allowed to run again when it is already running.
  52. [52]
    Hotstrings - Definition & Usage | AutoHotkey v2
    Hotstrings are mainly used to expand abbreviations as you type them (auto-replace), they can also be used to launch any scripted action.Introduction and Simple... · Ending Characters · Options · Long ReplacementsMissing: syntax | Show results with:syntax
  53. [53]
    StrLen - Syntax & Usage | AutoHotkey v2
    StrLen. Retrieves the count of how many characters are in a string. Length := StrLen(String). Parameters. String. Type: String.Missing: built- RegExMatch
  54. [54]
    RegExMatch - Syntax & Usage | AutoHotkey v2
    RegExMatch determines if a string contains a pattern (regular expression), returning the position of the match or 0 if not found.Missing: built- | Show results with:built-
  55. [55]
    AutoHotkey/Ahk2Exe: Official AutoHotkey script compiler - GitHub
    Ahk2Exe is the official AutoHotkey script to EXE converter, which is written itself in AutoHotkey v1.1. It compiles v1.1 and v2+ scripts into executables.
  56. [56]
    Escape Sequences - Definition & Usage | AutoHotkey v2
    Single-quote marks (') and double-quote marks (") function identically, except that a string enclosed in single-quote marks can contain literal double-quote ...
  57. [57]
  58. [58]
    Remapping Keys (Keyboard, Mouse and Controller) | AutoHotkey v2
    CapsLock::Ctrl, Makes CapsLock become Ctrl . To retain the ability to turn CapsLock on and off, add the remapping +CapsLock::CapsLock first.
  59. [59]
    How to Run Programs | AutoHotkey v2
    Programs are launched using the `Run` function with the program's path, like `Run "C:\Windows\notepad.exe"`. You can use the filename if the path is registered.
  60. [60]
    How to Manage Windows | AutoHotkey v2
    How to Manage Windows. One of the easiest and most useful things AutoHotkey can do is allow you to create keyboard shortcuts (hotkeys) that manipulate ...
  61. [61]
    WinMinimize - Syntax & Usage | AutoHotkey v2
    WinMinimize minimizes the window using a direct method, bypassing the window message which is usually sent when the minimize button, window menu or taskbar is ...
  62. [62]
    #MaxThreadsPerHotkey - Syntax & Usage | AutoHotkey v2
    #MaxThreadsPerHotkey sets the maximum number of threads (max 255) for a hotkey, controlling how many instances can run simultaneously, preventing double- ...Missing: performance tips
  63. [63]
    ahkscript/awesome-AutoHotkey - GitHub
    autohotkey.com - Official website of the AutoHotkey scripting language (downloads, forum, documentation). autohotkey.com/foundation - Official webpage of ...
  64. [64]
    thqby/AutoHotkey_H: AutoHotkey - macro-creation and ... - GitHub
    AutoHotkey is a free, open source macro-creation and automation software utility that allows users to automate repetitive tasks.
  65. [65]
  66. [66]
  67. [67]
    Descolada/Acc-v2: Acc library for AHK v2 - GitHub
    Acc (otherwise known as IAccessible or MSAA) is a library to get information about (and sometimes interact with) windows, controls, and window elements
  68. [68]
  69. [69]
    Descolada/AHK-v2-libraries - GitHub
    Useful libraries for AHK v2. Misc.ahk Implements useful miscellaneous functions. Range Allows looping from start to end with step.Useful Libraries For Ahk V2 · Misc. Ahk · String. Ahk
  70. [70]
    AutoHotkey Documentation
    AutoHotkey v1.1 · AutoHotkey v2.0.
  71. [71]
    AutoHotkey - Reddit
    r/AutoHotkey: This is a place to get help with AHK, programming logic, syntax, design, to get feedback, or just to rubber duck. There is zero tolerance for ...
  72. [72]
    GitHub: contributing to the AutoHotkey source code
    Nov 27, 2019 · This thread is for people to post advice/guidelines re. contributing pull requests to the AutoHotkey source code.
  73. [73]
    AutoHotkey Webinar 11/2020 Hour 2 - YouTube
    Nov 17, 2020 · In the second hour of the AutoHotkey webinar we get some peaks into some cool scripts by attendees. If you're interested in getting links to ...Missing: community meetups virtual
  74. [74]
    AutoHotkey Tutorial - Beginner to Advanced - YouTube
    This colletion of tutorials is the AutoHotkey course, which will take you from Beginner to Advanced. Right from the start you will learn to code your own ...
  75. [75]
    DarkGate Malware Adopts AutoHotkey in Latest Cyber Attacks
    Jun 5, 2024 · Shift to AutoHotkey. The transition to AutoHotkey, a scripting language less commonly used in malware, marks a significant strategic shift.
  76. [76]
    Experts Warn About Ongoing AutoHotkey-Based Malware Attacks
    May 17, 2021 · Researchers have uncovered an ongoing malware campaign that heavily relies on AutoHotkey (AHK) scripting language to deliver multiple remote access trojans ( ...Missing: keyloggers | Show results with:keyloggers
  77. [77]
    The Darkgate Menace: Leveraging Autohotkey & Attempt to Evade ...
    Apr 29, 2024 · McAfee Labs has recently uncovered a novel infection chain associated with DarkGate malware. This chain commences with an HTML-based entry point and progresses ...
  78. [78]
    DarkGate Malware Replaces AutoIt with AutoHotkey in Latest Cyber ...
    Jun 4, 2024 · Notorious DarkGate malware has shifted to using AutoHotkey for its last stages, making detection even more challenging.
  79. [79]
    New AutoHotkey-Based Malware Targets US, Canadian Banks
    Dec 30, 2020 · The new malware is written in AutoHotkey or AHK, which is an open-source scripting programming language that is used for software automation in ...
  80. [80]
    Command and Scripting Interpreter: AutoHotKey & AutoIT
    Mar 29, 2024 · AutoHotKey & AutoIT are scripting languages used to automate Windows tasks, and can be used by adversaries to execute malicious code, including ...
  81. [81]
    The Hidden Threat: New AutoHotkey Malware Scam - LG Networks
    AHK malware uses malicious scripts in AutoHotkey to infiltrate systems, steal data, and execute attacks like keyloggers, RATs, ransomware, and cryptocurrency ...Missing: 2020-2025 | Show results with:2020-2025
  82. [82]
    Malicious AutoHotkey Scripts Used to Steal Info, Remotely Access ...
    Apr 17, 2019 · Attackers are targeting potential victims using a malicious AutoHotkey script to avoid detection and to steal information, to drop more payloads, and to ...
  83. [83]
    Is this a virus? (AUTOHOTKEY) - Microsoft Q&A
    Jan 21, 2025 · AutoHotkey files sometimes trigger false positives in antivirus scans due to their scripting nature. You can check the file's SHA256 hash ...
  84. [84]
    How to Make Defender Exceptions for AutoHotKey Scripts
    Jul 30, 2023 · How can I make Defender exceptions for AutoHotKey scripts (*.ahk) so that these are not disabled? They seem to worl initially, ...
  85. [85]
    AutoHotkey Malware Audit - Lansweeper
    AutoHotKey malware has been exploited in the wild: audit all your AutoHotKey installations in your organization to prevent malicious scripts being executed.