Mouse e keyboard macro e hotkey.

Download

Documentation

Changelog

Tutorial in italiano

Support

Forum  |  wiki

English Deutsch Français Russian Japanese 


all words  exact phrase

Scripts


Table of Contents


Introduzione

Ogni script e' un normale file di testo contenente le linee di comando che verranno eseguite dal programma (AutoHotkey.exe).Uno script puo' inoltre contenere hotkeys  e hotstrings, o persino essere composto solo da loro. Tuttavia in assenza di hotkeys e hotstrings, uno script eseguira' i comandi in sequenza dall'alto verso il basso nel monento in cui verra' lanciato (mandato in esecuzione).

Il programma carica in memoria lo script linea dopo linea, ogni linea puo' essere lunga fino a 16,383 caratteri. Durante il caricamento lo script viene ottimizato e validato (verificato). Ogni errore di sintassi verra' visualizzato, e devono essere corretti affinche' lo script vada in esecuzione.


La parte superiore dello Script (La sezione Auto-eseguibile)

Dopo che lo script viee caricato, inizia ad essere eseguito dalla prima linea, e continua fintanto che non incontri  Return, Exit, hotkey/hotstring label, o la fine dello script (qualunque si verifichi  per prima). Questa prima porzione dello script viene comunemente chiamata sezione auto-execute (Auto-eseguibile).

Uno script che non sia persistente e che non contenga hotkeys, hotstrings, OnMessage, e GUI verra' terminato non appena la sezione auto-execute sara' comletata. tuttavia rimarra' operante in  idle state, rispondendo agli eventi quali hotkeys, hotstrings, GUI events, custom menu items, e timers.

Ogni thread lanciato da un hotkey, hotstring, menu item, GUI event, o timer inizia nuovo con i valori di default dei seguenti attributi settati come da sezione auto-execute. Se non sono settati verranno applicati gli standard defaults (come docunemto in ognuna delle seguenti pagine): DetectHiddenWindows, DetectHiddenText, SetTitleMatchMode, SetBatchLines, SendMode, SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelay, SetDefaultMouseSpeed, CoordMode, SetStoreCapslockMode, AutoTrim, SetFormat, StringCaseSense, Thread, e Critical.

Se la sezione auto-execute impiega tanto tempo ad essere completata (o non viene mai completata), i valori di default dei precedenti settaggi saranno attuati dopo 100 milliseconds. Quindi e' solitamente meglio fare i cambiamenti desiderati tra i defaults nella parte superiore degli script che contengano hotkeys, hotstrings, timers, o custom menu items. Notare inoltre che ogni thread conserva la propia collezione dei suddetti settaggi. Cambiamenti fatti su questi settaggi non avranno effetto su altri threads.


Sequenze di escape

Il carattere di fuga di default (escape character) e' l'accento (`), che sta' sul tasto del punto interrogativo sulla tastiera italiana. Usando questo carattere al posto del backslash si evita l'esigenza dei doppi blackslashe nei percorsi dei file (path).

Cosi come i segnali virgola e percent hanno significati speciali nel linguaggio di AutoHotkey, utilizza `, per specificare un letterale virgola  e `% per specificare un letterale segno di percentuale. Una delle eccezioni a cio' e' MsgBox, la quale non richiede comma per essere fugato (escaped). Un'altra eccezione e' la virgola prima del primo parametro di ogni comando: non deve essere fugato. guarda #EscapeChar per una lista completa delle sequenze di escape.

Determinati caratteri speciali sono prodotti per mezzo di una sequenza di escape. Le piu' comuni sono  `t (tab), `n (linefeed), e `r (ritorno a capo).

Tip: La prima virgola di ogni comando puo' essere omessa:

MsgBox questo va bene.
MsgBox, Pure questo va bene ;( ha una virgola esplicita).


Commenti negli Script

Gli script possono essere commentati utilizzando il punto-e-virgola ; per esempio:

; Questo e' un commento.

I commenti possono anche essere aggiunti alla fine del comando, in questo caso il punto-e-virgola deve avere alla sua sinistra almeno uno spazio o un Tab. For example:

Run Notepad ; Questo e' un commento sulla stessa linea del comando.

 In piu' i due simboli  /* e */  possono essere usati per commentare una intera sezione, ma soltanto se i simboli compaiono all'inizio della linea come in questo esempio:

/*
MsgBox, Questo comando e' stato commentato (disabilitato).
MsgBox, Questo anche.
*/

Siccome i commenti vengono ignorati quando uno script viene lanciato, non influenzano le performance o l'utilizzo di ram.

Il carattere di default per i commenti (punto-e-virgola) puo' essere cambiato con qualche altro carattere o string attraverso #CommentFlag.


Suddividere una linea lunga in una serie di piu' corte 

Una lunga linea puo' essere suddivisa in una serie di piu' corte per migliorare la legibilita' e la manutenzione. Cio' non riduce le performance perche' le linee suddivise vengono ricomposte in memoria nel momento in cui lo script viene lanciato (mandato in esecuzione).

Metodo #1 [v1.0.35.03+]: Una linea che inizi con "and", "or", ||, &&, una virgola, o un periodo viene automaticamente ricomposta con la linea immediatamente precedente. Nel seguente esempio, la seconda linea viene accodata alla prima perche' comincia con una virgola:

FileAppend, This is the text to append.`n ; E' possibile inserire dei commenti qui'.
, %A_ProgramFiles%\SomeApplication\LogFile.txt ; Commenti.

Similmente, le seguenti linee vengono ricomposte in una sola perche' le ultime due iniziano con"and" or "or":

if (Color = "Red" or Color = "Green" or Color = "Blue" ; Commenti.
or Color = "Black" or Color = "Gray" or Color = "White") ; Commenti.
and ProductIsAvailableInColor(Product, Color) ; Commenti.


Metodo #2 [v1.0.32+]: Questo metodo puo' essere usato per unire un largo numero di linee o quando non si puo' utilizzare il metodo #1. Tuttavia questo metodo e' utilizzato specialmente per auto-replace hotstrings, puo' anche essere utilizzato con altri comandi o expression. Per esempio:

FileAppend, ; Questa volta la virgola e' necessaria.
(
A line of text.
By default, the hard carriage return (Enter) between the previous line and this one will be written to the file.
By default, the tab to the left of this line will also be written to the file.
By default, variable references such as %Var% are resolved to the variable's contents.
), C:\My File.txt

Nel precedente esempio una serie di linee sono delimitate da una coppia di parentesi. cio' e' conosciuto come continuation section. Notare che la linea inferiore contiene l'ultimo parametro del FileAppend's dopo la parentesi di chiusure. Questa pratica e' opzionale; Cio' e' fatto in questo caso per far notare che quella e' una virgola-delimiter Piuttosto che una virgola letterale.

Il comportamento di default di una sezione di 'continuazione' puo' essere escluso includendo una o piu' delle seguenti opzioni alla destra della parentesi di apertura della sezione. Se e' presente piu' di una opzione, separatele con uno spazio. Per esempio: ( LTrim Join| %

Join: Specificare quali linee devono essere collegate assieme. Se questa opzione viene omessa, ogni linea eccetto l'ultima verra' seguita da un carattere linefeed  (`n). Se la parola Join viene specificata, le linee vengono connesse direttamente alle altre senza alcun carattere all'interno. Tuttavia la parola Join puo' essere seguita immediatamente da 15 caratteri. Per esempio, il comando Join inserira' uno spazio dopo ogni linea eccetto l'ultima (`s indica uno spazio -- e' una speciale sequenza di escape riconosciuta soltanto da Join). Un altro esempio e' Join`r`n, che inserisce CR+LF dopo la linea. Similarmente, Join| inserira' un carattere pipe dopo la linea. Per avere anche la linea finale della sezione conclusa da una stringa, includere una linea bianca immediatamente sopra le parentesi di chiusura.

LTrim: Omette gli spazi e le linguette all'inizio di ogni linea. Viene principalmente usato per permettere l'indentazione tra le linee da unire. Dalla versione v1.0.35.06+, questa opzione puo' essere attivata per sezioni multiple specificando #LTrim in una linea da solo. #LTrim e' "posizionale": esso avra' effetto su tutte le sezioni di continuazione dopo di esso. l'impostazione deve essere disattivata con #LTrim Off.

RTrim0 (RTrim seguito da uno zero): Disattiva l'omissione degli spazi e dei tab dalla fine di ogni linea.

% (percent sign): Tratta il segno di percentuale come letterale piuttosto che come riferimento ad una variabile. Cio' evita la necessita' di escape ogni segno di percentuale per renderlo letterale. Questa opzione non e' necessaria dove il segno di percentuale e' gia' letterale, come nelle auto-replace hotstrings.

, (virgola): Tratta le virgole come delimitatori anziche' come virgole letterali. Questa opzione raramente usata e' necessaria soltanto per le virgole fra i parametri dei comandi poiche nelle chiamate delle funzioni (function calls), il tipo di virgola non importa. Inoltre questo tipo di opzione trasforma soltanto quelle virgole che realmente delimitano i parametri. Cioe' una volta che il parametro del comando e' raggiunto (o non ci sono parametri), le virgole successive sono trattate come virgole letterali.

` (accento): Tratta ogni carattere di accento letteralmente piuttosto che come carattere di fuga ( escape character). Specificando questa opzione inoltre si evita che le virgole ed i segni di percento siano esplicitamente ed individualmente escaped (esclusi, remmati). In piu', previene la traduzione di alcune esplicite sequenze di escape come `r or `t.

Remarks

Escape sequences come `n (lineanuova) e `t (tab) sono supportate all'interno delle "sezioni continuate"(linee suddivise) a meno che non specificata  l'opzione accent (`) option.

Commenti (punto e virgola e /*..*/) non sono supportate all'interno di sezioni continuate perche' vengono viste come testo letterale. Tuttavia, i commenti possono essere inclusi all'inizio o alla fine della sezione. Per esempio:

FileAppend, ; Commento.
; I commenti sono supportati dalla versione v1.0.35.06+.
( LTrim Join ; Commento.
; Questo non e' un commento, ma e' letterale.
), C:\File.txt ; Commento.

Come conseguenza di cio', il punto e virgola non ha mai bisogno di essere escaped all'interno di una sezione continuata (continuation section).

Una sezione continuata non puo' produrre una linea la cui lunghezza superi 16,383 charatteri (se viene provato, il programma vi avvertira' nel momento in cui viene mandato in esecuzione). Un modo per ottenere cio', e' di mettere una serie di concatenazioni in una variabili, per esempio:

Var =
(
...
)
Var = %Var%`n ; Aggiungi piu' testo ad una variabile attraverso un' altra sezione continuata.
(
...
)
FileAppend, %Var%, C:\My File.txt

Poiche una parentesi di chiusura indica la fine di una sezione di continuazione, per avere un'inizio linea con la parentesi di chiusura letterale, precederla con un accento.

La costruzione frammentaria di una sezione di continuazione per mezzo di #Include non è sostenuta.

Una sezione di continuazione puo' essere immediatamente seguita da una linea contenente una parentesi aperta di un'altra sezione di continuazione. Ciò permette le opzioni dette precedentemente per essere variato durante il corso della costruzione della linea singola. 


Convertire uno Script in un  .EXE (ahk2exe)

Il compilatore degli script (cortesemente oferto da Jonathan Bennett's AutoIt v3) e' incluso con il programma. Gli script per AutoIt v2 non sono supportati, pertanto se e' necessario, prima auto-convert il tuo .aut file in un  .ahk.

Una volta che uno script viene compilato, diviene un eseguibile indipendente; percio' puo' essere utilizzato anche in quei computer che non hanno AutoHotkey installato (e come gli eseguibili puo' essere distribuito o venduto senza restrizioni). Il processo di compilazione comprime ed encrypt tutte le seguenti cose: lo script, ogni file incluso, e ogni file incorporato attraverso il comando FileInstall.

La compilazione non si ripercuote sulle performance dello script. Infatti, uno script e' piu' lento quando viene lanciato perche' deve essere decompresso e decriptato per essere caricato in memoria, dopo di che' viene optimized  proprio come un normale script.

Ahk2Exe puo' essere utilizzato nella seguente maniera:

  1. GUI Interface: Lancia "Convert .ahk to .exe" dallo Start Menu.
  2. Right-click: Puoi fare click col tasto destro su ogni file .ahk e selezionare "Compile Script" (Disponibile soltanto se l'opzione script compiler option viene scelta quando AutoHotkey e' istallato). Questo creera' un file EXE con lo stesso nome dello script, nella stessa directori. Nota: Il file EXE verra' prodotto usando le stessa icone e livello di compressione che e' stato utilizzato l'ultima volta con il Method #1 sopra e non avra' una password.
  3. Command Line: Il compilatore puo' essere utilizzato da linea di comando con i seguenti paremetri:
    Ahk2exe.exe /in MyScript.ahk [/out MyScript.exe][/icon MyIcon.ico][/pass password]
    Parametri contenenti spazi devono essere racchiuse tra le doppie virgolette. Se viene omesso il parametro "out" ,l' EXE avra' lo stesso nome dello script originario.

Note:


Passare parametri ad uno script da linea di comando

Gli script supportano parametri da linea di comando. La sintassi e':
AutoHotkey.exe [Switches] [Script Filename] [Script Parameters]

E per gli script compilati :
CompiledScript.exe [Switches] [Script Parameters]

Switches puo' essere zero o uno dei seguenti:
/f o /force -- Manda in esecuzione, non tenendo conto di qualsiasi messaggio di errore.
/r o /restart -- Indica che lo script sta' ricominciando (restarted)(che di solito ottenuto attraverso il comando Reload, internamente).
/ErrorStdOut -- Invia gli errori di sintassi a stdout piuttosto che visualizzare un messaggio. Guarda #ErrorStdOut per maggiori dettagli.

Il nome dello Script  puo' essere omesso se non ci sono parametri. Se omesso, verra' mandato in esecuzione (o verra' chiesto di creare) AutoHotkey.ini nella directory di lavoro.

 I Parametri degli Script possono essere stringhe che vuoi passare allo script (ma ogni stringa che contenga spazi deve essere racchiusa tra le doppie virgolette). Lo script vede i parametri passati come le variabili (variables) %1%, %2%, e cosi' via. In piu', %0% contiene il numero dei parametri passati (0 se assenti). Il seguente esempio termina lo script quando gli vengono passati troppo pochi parametri:

if 0 < 3 ; La parte sinistra di una comparazione non-expression if-statement e' sempre il nome di una variabile.
{
MsgBox This script requires at least 3 incoming parameters but it only received %0%.
ExitApp
}

Se il numero dei parametri passati ad uno script varia (forse dovuto all' utente che drag and drop una serie di file in uno script compilato), il seguente esempio puo' essere usato per estrarli uno per uno:

Loop, %0% ; Per ogni parametro:
{
param := %A_Index% ; Prende il contenuto della variabile il cui nome e' contenuto in A_Index.
MsgBox, 4,, Parameter number %A_Index% is %param%. Continue?
IfMsgBox, No
break
}

Se il parametro e' il nome di un file, il seguente esempio puo' essere usato per convertirli nel loro nome lungo(case-corrected) nome lungo (come viene conservato nel file system), includendo il percorso assoluto:

Loop %0% ; For each parameter (or file dropped onto a script):
{
GivenPath := %A_Index% ; Prende il contenuto della variabile il cui nome e' contenuto in A_Index.
Loop %GivenPath%
LongPath = %A_LoopFileLongPath%
MsgBox The case-corrected long path name of file`n%GivenPath%`nis:`n%LongPath%
}


Correggere uno Script (Debugging)

Comandi come ListVars e Pause possono aiutare a correggere uno script. Per esempio, le due linee seguenti, quando inserite, temporaneamente e con cura in punti mirati, creano punti di arresto "break points" nello script:

ListVars
Pause

Quando lo script incontrera' queste due linee, mostrera' il contenuto di tutte le variabili della tua ispezione. Quando sarai pronto per riprendere, un-pause lo script attraverso il file o il Tray menu. Lo script riprendera' fino al prossimp "break point" (se presenti).

Generalmente e' meglio inserire questi "break points" in posizioni dove la finestra attiva non riguarda lo script, come immediatamente prima di un comando WinActivate. Cio' permette allo script di riprendere propiamente le operazioni quando lo leverai dalla pausa (un-pause).

Anche i seguenti comandi sono utili per le correzioni: ListLines, KeyHistory, e OutputDebug.


Portabilita' di AutoHotkey.exe

Il file AutoHotkey.exe e' tutto cio' che e' necessario per mandare in esecuzione uno script .ahk. L'unica eccezione e' Windows NT4, che richiede una copia di psapi.dll (dalla cartella AutoHotkey) per alcuni script che fanno uso del Process command.


Installer Options

Per istallare  AutoHotkey in modo silente nella cartella di default (che e' la stessa directory utilizzata nella modalita' normale), passa il parametro /S all' installer (/S deve essere capitalizzato). Per esempio: 

AutoHotkey104307_Install.exe /S

Una directory diversa da quella di default puo' essere specificata attraverso il parametro /D (in assenza di /S, cio' cambiera' la directory di default attraverso l' installer). Per esempio:

AutoHotkey104307_Install.exe /S /D=C:\Program Files\AutoHotkey

Per disinstallare in modo silente  AutoHotkey, passare il parametro /S all' uninstaller. Per esempio:

"C:\Program Files\AutoHotkey\uninst.exe" /S


Script Showcase

GUARDA questa pagina per alcuni utili script.

 

Download | Documentation | Changelog | Support | Forum | X Traduttori