# AutoHotkey

AutoHotkey è un linguaggio di scripting libero ed open source per Microsoft Windows, inizialmente sviluppato con l'obiettivo di fornire scorciatoie da tastiera e hotkey in modo semplice e la creazione rapida di macro e di automazione sul software, che consente agli utenti aventi un minimo di competenza sull'utilizzo del calcolatore di automatizzare azioni ripetitive in grossomodo ogni applicazione Windows.

## Caratteristiche

Gli script AutoHotkey possono essere utilizzati per lanciare programmi, aprire documenti, inviare sequenze di tasti e clic del mouse e inviare i movimenti, assegnare, recuperare e manipolare le variabili, i cicli di esecuzione e di manipolare le finestre, file e cartelle. Questi comandi possono essere innescati da un tasto di scelta rapida, come ad esempio uno script che potrebbe aprire un browser internet ogni volta che l'utente preme Ctrl+Alt sulla tastiera.
I tasti della tastiera fisica o del mouse possono essere rimappati.
AutoHotkey consente inoltre di impostare delle 'hotstrings', ovvero una sequenza di simboli che viene sostituita nel momento in cui viene digitata; esempio caratteristico è l'utilizzo delle hotstring per l'espansione delle abbreviazioni, come ad esempio — nella lingua inglese — la sostituzione automatica della stringa "btw" con il testo "by the way" nel momento in cui si scrive.
In aggiunta gli script possono essere eseguiti automaticamente all'avvio del calcolatore, anche senza interazione con la tastiera.
È altresì possibile ottenere delle azioni complesse creando interfacce utente, finestre, form, operare sul registro di sistema, o utilizzare le API di Windows chiamando le funzioni attraverso le librerie DLL.
Gli script possono essere compilati in un file eseguibile a 32 o 64 bit. Il sorgente è scritto in C++ e si può compilare con Visual Studio Express.
Caratteristiche di AutoHotkey:
* Rimappare la tastiera, come da QWERTY a Dvorak o di altri layout di tastiera alternativa.
* Utilizzo di tasti di scelta rapida per riempire nei nomi dei file utilizzati di frequente o altre frasi.
* Controllare il cursore del mouse con una tastiera o il joystick.
* Aggiunta di una firma per e-mail message boards, ecc
* Un sistema di monitoraggio e chiusura automatica di programmi indesiderati.
* Pianificazione di un sollecito automatico, sistema di scansione, o di backup.
Caratteristiche avanzate del linguaggio:
* Accesso alla memoria attraverso puntatori (Analogamente a C).
* Sintassi multipla (accetta per esempio i blocchi indentati o separati da parentesi graffe, accetta due diversi operatori di assegnamento di un valore alle variabili, accetta le subroutine attraverso i costrutti goto e gosub, ma anche le funzioni)
* Operazioni sui file
* Operazioni sui processi

## Malware e falsi positivi

Talora AutoHotkey viene utilizzato per produrre software facilmente distribuibile (compilando il sorgente), tuttavia, per poter funzionare, gli eseguibili prodotti a partire da AutoHotkey devono auto-contenere una porzione del medesimo AutoHotkey, necessaria per interpretare ed eseguire gli script AutoHotkey, in quanto — per l'appunto — è un linguaggio interpretato. Questo ha fatto sì che alcuni prodotti anti-malware, nel cercare di identificare anticipatamente gli eventuali malware sviluppati con AutoHotkey, fallissero producendo falsi positivi poiché identificavano nella summenzionata porzione di codice per l'interpretazione degli script la prova della presenza di codice malevolo, anziché il vero codice malevolo presente nello script.