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

Variabili ed Espressioni


Table of Contents

Introduzione alle variabili

Tipi di variabili: AutoHotkey non ha tipi di variabili esplicitamente definiti; Tutte le variabili sono registrate come stringhe di caratteri. Tuttavia, una variabile contiene solamente campi (con una opzione sui numeri dopo la virgola (decimal point)) che vengono automaticamente convertiti in numeri qualora una operazione matematica o di comparazione lo richieda. Per contro, il risultato di una operazione matematica verra' convertita in una stringa quando bisogna conservarla in una variabile.

Portata e dichiarazione delle variabili: Con eccezione delle variabili locali (local variables) nelle funzioni, tutte le variabili sono globali; cioe', il loro contenuto puo' essere letto e alterato da qualsiasi parte dello script. In piu', le variabili non hanno bisogno di essere dichiarate prima del loro utilizzo; vengono ad esistere semplicemente utilizzandole (e ogni variabile viene creata vuota/bianca).

Il nome delle variabili: Il nome delle variabili non e' case sensitive (per esempio, CurrentDate e' identico a  currentdate). Il nome di una variabile puo' essere lungo fino a 254 caratteri e puo' essere composta da lettere, numeri e dai seguenti caratteri: # _ @ $ ? [ ]

Per attenersi alle convenzioni di stile, e' generalmente meglio chiamare le variabili utilizzando solamente lettere, numeri e il carattere underscore (per esempio: CursorPosition, Total_Items, e entry_is_valid). This style allows people familiar with other computer languages to understand your scripts more easily. Also, if you use the same conventions in AutoHotkey as you use in other languages, cio' rende gli script piu' facilmente rileggibili.

Anche se il nome di una variabile puo' essere costituito interamente da cifre, questo e' usato generalmente utilizzato soltanto per incoming command line parameters. Tali nomi numerici non possono essere utilizzati nelle expressions poiche verrebbero viste come numeri piuttosto che come variabili.

Poiche' le parole AND, OR, e NOT sono utilizzate come operators nelle espressioni, non devono essere utilizzate come nomi di variabili. Utilizzandoli in una espressione si impedirebbe una adeguata valutazione. In Piu' una linea del tipo  OR = 123 verrebbe interpretata come una continuation line piuttosto che come una assegnazione.

Salvare un valore in una variabile: Per salvare una stringa o un numero in una variabile, ci sono due metodi: traditional ed expression. Il metodo tradizionale utilizza l'operatore uguale equal sign operator (=) per assegnare testo letterale non virgolettato o racchiuso tra i segni di percentuale. Per esempio:

MyNumber = 123
MyString = This is a literal string.
CopyOfVar = %Var% ; Con l'operatore = , i segni di percentuale sono necessari per accedere al contenuto di una variabile.

Al contrario, il metodo expression utilizza l'operatore duepuntiUguale (:=) Per salvare numeri, testo virgolettato e altri tipi di espressioni. I seguenti esempi sono funzionalmente identici ai precedenti :

MyNumber := 123
MyString := "This is a literal string."
CopyOfVar := Var ; Al contrario della controparte nella precedente sezione, i segni di percentuale non vengono utilizzati con l'operatore :=

L'ultimo metodo e' da preferire sia per la maggiore chiarezza sia perche' supporta expression syntax similmente agli altri linguaggi.

Da cio' potete indovinare che ci sono due metodi per cancellare il contenuto di una variabile:

MyVar =
MyVar := ""

Il paio di virgolette deve essere utilizzato soltanto con l'operatore := poiche' se venisse usato con l'operatore =, verrebbero salvate le virgolette all'interno della variabile.

Accedere al contenuto di una variabile: Come ci sono due metodi per salvare un valore, ce ne sono altrettanti per accedervi: traditional ed expression. Il metodo tradizionale richiede che il nome di ogni variabile venga racchiuso tra i segni di percentuale per leggerne il contenuto. Per esempio: 

CopyOfVar = %Var%

MsgBox Il valore racchiuso nella variabile di nome Var e' %Var%.

Di contro, il metodo expression omette i segni di percentuale attorno alla variabile, ma racchiude il testo letterale all'interno delle virgolette. La seguente e' l'espressione equivalente dell'esempio precedente:

CopyOfVar := Var
MsgBox % "The value in the variable named Var is " . Var . "."

Nella linea del precedente MsgBox, il segno di percentuale e lo spazio sono usati per cambiare i parametri dal metodo tradizionale a quello expression. Cio' e' necessario perche' il metodo tradizionale viene utilizzato di default da tutti i comandi (eccetto dove diversamente documentato). Tuttavia, alcuni parametri di alcuni comandi sono documentati come espressioni di eccezzione, nel qual caso il segno di percentuale e' permesso ma non necessario. Per esempio, tutti i seguenti sono effettivamente identici poiche' il primo parametro del comando Sleep  e' expression-capable:

Sleep MillisecondsToWait
Sleep %MillisecondsToWait%
Sleep % MillisecondsToWait

Confrontare variabili: Leggere la sezione expressions  per importanti note sui diversi modi di comparazione, specialmente con l'uso delle parentesi.

Espressioni

Le espressioni vengono usate per una o piu' operazioni su una serie di variabili, stringhe letterali, e/o numeri letterali.

Il nome delle variabili in una espressione non sono racchiuse tra i segni di percentuale (eccetto per gli array e altre double references). Di conseguenza, stringhe letterali devono essere racchiuse tra le doppie virgolette per essere distinte dalle variabili. Per esempio :

if (CurrentSetting > 100 or FoundColor <> "Blue")
MsgBox Il settaggio e' troppo alto o e' presente un colore sbagliato.

Nel precedente esempio, "Blue" appare tra le virgolette perche' e' una stringa letterale. Per includere i simboli virgolette all'interno di una stringa letterale, raddoppiare le virgolette come specificato in questo esempio: "She said, ""An apple a day."""

Important: Una condizione IF (if-statement) che contenga una espressione si differenzia da una tradizionale if-statement proprio come If FoundColor <> Blue mettendo dopo la parola "if" una parentesi tonda aperta. Tuttavia cio' e' generalmente ottenuto racchiudendo l'intera espressione tra parentesi, cio' puo' essere ottenuto anche con : if (x > 0) e (y > 0). In piu', l'apri parentesi puo' essere omessa se il primo parametro dopo la parola "if" e' la chiamata ad una funzione function call o un operatore quali  "not" o "!".

Stringhe vuote: Per specificare una stringa vuota in una espressione, utilizzare una coppia di virgolette con niente al loro interno. Per esempio, il controllo if (MyVar <> "") sara' vero se la variabile MyVar non e' vuota. Tuttavia, in una traditional-if, una coppia di virgolette vuote viene trattata letteralmente. Per esempio, il controllo if MyVar = ""  sara' vero solo se MyVar contiene effettivamente un paio di virgolette. Percui per controllare che una variabile sia vuota con una if tradizionale utilizzare  = o <> con niente alla destra, come in questo esempio : if Var =

Ogni espressione invalida come (x +* 3) produrra' una stringa vuota.

Valori booleani: Quando una espressione e' chiamata a verificare se una espressione e' vera o falsa (proprio come in un controllo IF), un valore vuoto o uguale a zero viene considerato falso e tutti gli altri valori sono considerati veri. Per esempio, il controllo "if ItemCount" sara' falso soltanto se ItemCount e' vuoto o contiene lo 0. Similarmente, l'espressione "if not ItemCount" produrra' l'effetto contrario.

Operatori come NOT/AND/OR/>/=/< automaticamente produrranno un valore vero o falso: restituiranno 1 per vero e 0 per il falso. Per esempio, nella seguente espressione, alla variabile Done viene assegnato 1 se una delle condizioni e' vera:

Done := A_Index > 5 or FoundIt

Come suggerito sopra, una variabile puo' essere usata per tenere un valore falso semplicemente non inserendovi nulla o inserendovi uno 0. Per avvantaggiarsi da cio', il controllo-scorciatoia "if Done" puo' essere utilizzato per determinare se la variabile Done  e' vera o falsa.

Le parole true e false sono variabili incorporate contenenti rispettivamente 1 e 0. Possono essere usate per rendere uno script piu' leggibile:

CaseSensitive := false
ContinueSearch := true

Salvare il risultato di una espressione: Per assegnare il risultato ad una variabile, usa  := operator. For example:

NetPrice := Price * (1 - Discount/100)

Poiche' l'esempio precedente produce un risultato in virgole mobile (dovuto alla divisione) il numero di decimali salvati in NetPrice e' determinato da SetFormat. SetFormat puo anche influenzare altre caratteristiche del risultato dell'espressione. Per contrasto, AutoTrim non ha effetti sul risultato dell'espressione.

Integer e numeri a virgola mobile: All'interno di una espressione, i numeri sono considerati come numeri a virgola mobile se contengono il punto decimale (decimal point); Tuttavia sono integer. Per la maggior parte degli operatori -- come l'addizione e la moltiplicazione -- se uno dei e' un numero in virgola mobile, il risultato sara' anchesso un numero a virgola mobile.

All'interno delle espressioni e delle non-espressioni, gli integer possono essere scritti ugualmente nel formato hexadecimal o decimal. Tutti i numeri hexadecimal iniziano con il prefisso 0x. Per esempio, Sleep 0xFF e' equivalente a Sleep 255.

Forzare una expression: Una espressione puo' essere usata in un parametro che non lo supporta direttamente (ad eccezione dei parametri OutputVar o InputVar come quelli di StringLen). Cio' e' ottenuto facendolo precedere dal segno di percentuale e da uno spazio o tab. La tecnica viene spesso usata per accedere agli arrays. For example:

FileAppend, % MyArray%i%, My File.txt
MsgBox % "The variable MyVar contains " MyVar "."
Loop % Iterations + 1
WinSet, Transparent, % X + 100
Control, Choose, % CurrentSelection - 1

Gli operatori nelle Espressioni

La precedenza tra gli operatori come la moltiplicazione (*) e la divisione (/) sono calcolate da sinistra-verso-destra. By contrast, un operatore con precedenza inferiore come l'addizione (+) verra' eseguito dopo uno con precedenza maggiore come la moltiplicazione (*). Ossia, 3 + 2 * 2 verra' considerato come se fosse scritto 3 + (2 * 2). Le parentesi vengono utilizzate per ridefinire le precedenze, come nell'esempio che segue: (3 + 2) * 2

Expression Operators (in ordine decrescente di precedenza)

(Ref)

Se il riferimento ad una variabile come %Var% appare in una espressione, Qualunque cosa contenga si assume sia il nome o il nome parziale di un'altra variabile (se non c'e' tale variabile, %Var%  si risolve in una stringa bianca). Questo viene generalmente utilizzato per acccedere agli elementi di un array come nel seguente esempio:

Var := MyArray%A_Index% + 100

Un tale reference non dovrebbe risolvere un environment variable, la clipboard, o reserved/read-only variable. Se cio' accade, verra' trattata come una stringa vuota.

**

Power (**). Sia la base che l'esponente possono contenere un punto decimale. Se l'esponente e' negativo, il risultato verra' formattato come un numero a virgola mobile, anche se la base e l'esponente sono entrambe integer.

Una base negativa come (-2)**2 non e' supportata; restituira' una stringa vuota. Ma perche' ** ha una precedenza maggiore rispetto al segno neno, -2**2 equivarra' a -4.

-
!
~
& *

Unary minus (-): Benche si utilizzi lo stesso simbolo della sottrazione, il meno unario si applica solamente ad un singolo elemento o sub-expression come mostrato due volte in questo esempio: -(3 / -x). Nelle note relative, ogni segno di piu' unario in una espressione sono ignorati.

Logical-not (!): Se l'operando e' bianco o 0, il risultato dell' applicazione del logical-not sara' 1, che significa vero "true". Tuttavia il risultato sara' 0 (false). Per esempio: !x or !(y and z).
Nota: La parola NOT e' un sinonimo di ! tranne che ! ha una precedenza maggiore.

Bitwise-not (~): Questo inverte ogni bit del suo operando. Se l'operatore e' un numero a virgola mobile, verra' convertito in un integer prima dell' inversione, se l'operando e' compreso tra 0 e 4294967295 (0xffffffff), verra' trattato come un unsigned 32-bit. Altrimenti verra' trattato come un signed 64-bit. For example, ~0xf0f evaluates to 0xfffff0f0 (4294963440).

Address (&) e Dereference (*) [v1.0.36.07+]: &MyVar restituisce l'indirizzo di MyVar all'interno della memoria. Per contro, *MyVar supporrebbe che MyVar contenga un indirizzo numerico della memoria e restituira' tale indirizzo come un numero compreso tra 0 e 255 (0 viene sempre restituito se l'indirizzo e' 0; ma ogni altro indirizzo non valido dovrebbe essere evitato perche' potrebbe mandare in crash lo script). Questo operatore raramente-utilizzato puo' aiutare con DllCall structures e per la manipolazione di stringhe che contengano zero binari. ExtractInteger() ne e' un esempio.

*
/
//

Moltiplicazione (*): Il risultato e' un integer se entrambe i moltiplicandi sono integer; altrimenti sara' un numero in virgola mobile.

True divisione (/): Diversamente da EnvDiv (/=), La vera divisione restituira' un numero in virgola mobile anche se i dividendi sono integer. Per esempio, 3/2 restituira' 1.5 piuttosto che 1.

Floor divide (//)[v1.0.34+]: L'operatore doppio-slash viene utilizzato per divisioni ad alte-formance se entrambe i moltiplicandi sono integer. Per esempio, 5//3 = 1 e 5//-3 = -1. Se uno dei dividendi e' un numero a virgola mobile, avremo una divisione con virgola mobile e il risultato verra' arrotondato all' integer piu' vicino. Per esempio, 5//3.0 = 1.0 e 5.0//-3 = -2.0. Anche se il risultato della divisione e' un integer, verra' memorizzato in un formato-a-virgolaMobile, in modo che chiunque altro li usi li veda come tali. per il modulo, guardare mod().

Nota: Gli operatori *= e /= sono scorciatoie per moltiplicare e dividere il valore di una variabile con un altro valore. Per esempio, Var*=2 dara' lo stesso risultato di Var:=Var*2 (comunque la scorciatoia ha anche prestazioni migliori).

La division per zero restituira' un risultato vuoto (empty string).

+
-

Addizione (+) and sottrazione (-). Nota: nelle espressioni, ogni valore vuoto (empty string) coinvolto in una operazione matematica nonviene convertito in uno zero. Invece viene considerato un errore,.Per esempio, se la variabile X e' vuota ( blank/empty), L'espressione X+1 restituira' un valore blank anziche' 1.

Gli operatori += e -= sono scorciatoie per addizionare e sottrarre una variabile.Per esempio, Var+=2 dara' lo stesso risultato che Var:=Var+2 (comunque il primo ha prestazioni migliori). Similarmente, una variabile puo' essere aumentata o diminuita di 1 utilizzando Var++, Var--, ++Var, o --Var.

<<
>>
Spostamento di un Bit a sinistra (<<) e a destra (>>). Numeri in virgola mobile sono arrotondati prima del calcolo. Shift left (<<) e' equivalente a moltiplicare a moltiplicare Value1 per "2 alla potenza di Value2th ". Shift right (>>) e' equivalente a dividere Value1 per "2 to the Value2th power" e arrotondare il risultato.
&
^
|
Bitwise-and (&), bitwise-exclusive-or (^), and bitwise-or (|). Tra i tre, ha la precedenza maggiore e | la minore. Numeri a virgola mobile verranno convertiti ad integer prima di essere calcolati.
.

Concatenate (.). L'operatore periodo (dot) puo' essere usato per unire stringhe adiacenti e variabili (dovrebbe esservi almeno uno spazio ad ogni lato del periodo). In molti casi, potete anche omettere il periodo per ottenere lo stesso risultato (benchè ci dovrebbe essere almeno uno spazio fra gli item da fondere).

Esempio (expression method): Var := "The color is " . FoundColor
Esempio (traditional method):  Var = The color is %FoundColor%

In v1.0.31+, nelle sub-expression e nei references come Array%i% possono essere uniti con altre item. Per esempio:
Var := "The net price is " . Price * (1 - Discount/100)
Var := "The largest among X and Y is " . Max(X, Y)
Var := "The value of array element " i " is " Array%i%

Quando del testo viene aggiunto alla fine di una variabile, il metodo tradizionale di concatenamento (=) ha prestazioni migliori del metodo expression (:=), specialmente quando le stringhe sono grandi. Questo e' un esempio del metodo piu' veloce = %Var%%TextToAppend%

>   <
>= <=
Maggiore (>), Minore (<), maggiore-uguale (>=), e minore-uguale (<=). Se uno degli input non e' un numero, entrambe verranno comparati alfabeticamente (un numero racchiuso tra virgolette come "55" verra' sempre considerato non numerico in questo contesto). La comparazione e' case sensitive soltanto se StringCaseSense e' stato attivati (turned on).
= ==
<> !=
Uguale (=) , case-sensitive-uguale (==) , and non-uguale (<> or !=). Gli operatori != e <> sono identici. L'operatore == e' quasi identico a = eccetto che quando uno degli input non e' un numero, nel qual caso == sara' sempre case sensitive e = sempre case insensitive (StringCaseSense). Per contro, <> e != e' ottenuto da StringCaseSense. Nots: In questo contesto una stringa tra virgolette come "55" e' sempre considerato non numerico.
NOT Logical-NOT. Eccetto che per la precedenza, questo si comporta come l' operatore !. Per esempio:  not (x = 3 or y = 3) e' uguale a !(x = 3 or y = 3)
AND
&&
Entrambe sono logical-AND. Per esempio:  x > 3 and x < 10. Per migliorare le performance, short-circuit evaluation viene applicato dove possibile.
OR
||
Entrambe sono logical-OR. Per esempio: x <= 3 or x >= 10. Per migliorare le performance, short-circuit evaluation viene applicato dove possibile.

mod()
round()
abs()

Queste ed altre funzioni matematiche integrate sono descritte qui'. here.


Performance
: l'operatore espressione di assegnazione (:=) e' ottimizzato ed e' un po' piu' veloce dell'operatore non-expression (=) per i semplici casi come i seguenti:

x := y ; Same performance as x = %y%
x := 5 ; Same performance as x = 5.
x := "literal string" ; Stesse performance di x = literal string.


Built-in Variables (Incorporate)

Le seguenti variabili sono integrate nel programma e possono essere utilizzate in ogni script. La maggior parte di essi sono riservati, cio' significa che non possono essere direttamente modificati nel loro contenuto da uno script.

Table of Contents


Special Characters

A_Space Questa variabile contiene un singolo carattere spazio. Guarda AutoTrim per maggiori dettagli.
A_Tab Questa variabile contiene un singolo carattere tab. Guarda AutoTrim per maggiori dettagli.


Script Properties

1, 2, 3, etc. Queste variabili vengono automaticamente create quando uno script viene lanciato con parametri a linea di comando. Possono essere cambiate e richiamate come delle normali variabili (for example: %1%). La variabile %0% contiene il numero delle variabili  the number of parameters passed (0 if none). See the script section for details.
A_WorkingDir Imposta la directory principale per gli script, nella quale si accede ai file di default. Il backslash finale non e' incluso a meno che non sia la root directory. Two examples: C:\ and C:\My Documents. Utilizza SetWorkingDir per cambiare la directory di lavoro. 
A_ScriptDir Il percorso completo della directory dove e' collocato lo script corrente. Per compatibilita' col passato e con  AutoIt v2, il backslash finale e' incluso soltanto  per gli script  .aut . Un esempio con gli script .aut e' C:\My Documents\
A_ScriptName Il nome dello script corrente, senza il percorso, es. MyScript.ahk.
A_ScriptFullPath La combinazione delle due precedenti variabili, per avere il nome completo del file, es. C:\My Documents\MyScript.ahk
A_LineNumber
[v1.0.31+]

Il numero della linea corrente, all'interno dello script (o di uno incluso #Include files). Questo numero di linea e' abbinato a quello mostrato da ListLines; puo' essere utile con il rapporto degli errori, come in questo esempio: MsgBox Could not write to log file (line number %A_LineNumber%).

Poiche' uno script, quando viene compilato viene riunito con i suoi file inclusi #Include files in unico file di grandi dimensioni, la numerazione delle righe potrebbe non essere  uguale a quella di un file non compilato.

A_LineFile
[v1.0.31+]
Il percorso completo e il nome di un file che contenga A_LineNumber, che sara' lo stesso di A_ScriptFullPath a meno che la linea non appartenga ad uno script non compilato  #Include files.
A_AhkVersion Nelle versioni precedenti alla 1.0.22, questa variabile e' in bianco(vuota). Altrimenti contiene il numero della versione di AutoHotkey che sta' in esecuzione, come 1.0.22. Nel caso di uno script compilato compiled script, verra' riportata la versione con la quale e' stato compilato lo script. La formattazione del numero della versione permette ad uno script di controllare che A_AhkVersion sia maggiore di un minimo "numero di versione" tramite > or >= as in this example: if A_AhkVersion >= 1.0.25.07
A_AhkPath
[v1.0.41+]

Per gli script non compilati: il percorso completo e il nome di un file EXE che sta attualmente in esecuzione. For example: C:\Program Files\AutoHotkey\AutoHotkey.exe

Per i file compilati compiled scripts: Simile al precedente tranne che la directory di AutoHotkey viene individuata attraverso il registro. HKEY_LOCAL_MACHINE\SOFTWARE\AutoHotkey\InstallDir. If there is no such entry, A_AhkPath is blank.

A_IsCompiled Contiene 1 se lo script e' in esecuzione come un file compilato compiled EXE  e niente, se non lo e'.
A_ExitReason The most recent reason the script was asked to terminate. La variabile e' vuota finche' lo script sta' nella subroutine OnExit e finche' essa e' in esecuzione, o e' stato richiamato almeno una volta da un tentativo di uscita. Guardare OnExit per maggiori dettagli.


Date and Time

A_YYYY Anno corrente in 4 lettere (e.g. 2006). Sinonimo di  A_Year. Note: To retrieve a formatted time or date appropriate for your locale and language, use "FormatTime, OutputVar" (time and long date) or "FormatTime, OutputVar,, LongDate" (retrieves long-format date).
A_MM Mese corrente in 2 lettere (01-12). Synonymous with A_Mon.
A_DD Giorno corrente in 2 lettere (01-31). Synonymous with A_MDay.
A_MMMM Current month's full name in the current user's language, e.g. July
A_MMM Current month's abbreviation in the current user's language, e.g. Jul
A_DDDD Current day of the week's full name in the current user's language, e.g. Sunday
A_DDD Current day of the week's 3-letter abbreviation in the current user's language, e.g. Sun
A_WDay Giorno corrente della settimana  (1-7). 1 e' domenica in tutte le parti del mondo.
A_YDay Giorno corrente dell'anno (1-366). The value is not zero-padded, e.g. 9 is retrieved, not 009. To retrieve a zero-padded value, use the following: FormatTime, OutputVar, , YDay0
A_YWeek Current year and week number (e.g. 200453) according to ISO 8601. To separate the year from the week, use StringLeft, Year, A_YWeek, 4 and StringRight, Week, A_YWeek, 2. Precise definition of A_YWeek: If the week containing January 1st has four or more days in the new year, it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1.
A_Hour Current 2-digit hour (00-23) in 24-hour time (for example, 17 is 5pm). To retrieve 12-hour time as well as an AM/PM indicator, follow this example: FormatTime, OutputVar, , h:mm:ss tt
A_Min

Current 2-digit minute (00-59).

A_Sec Current 2-digit second (00-59).
A_MSec Current 3-digit millisecond (000-999). To remove the leading zeros, follow this example: Milliseconds := A_MSec + 0
A_Now The current local time in YYYYMMDDHH24MISS format. Note: Date and time math can be performed with EnvAdd and EnvSub. Also, FormatTime can format the date and/or time according to your locale or preferences.
A_NowUTC The current Coordinated Universal Time (UTC) in YYYYMMDDHH24MISS format. UTC is essentially the same as Greenwich Mean Time (GMT).
A_TickCount

Il numero in millisecondi dall' ultimo riavvio del P.C. Conservando il valore di A_TickCount in una variabile, il tempo passato puo' essere calcolato sottraendo il valore attuale di A_TickCount a quello sottratto in registrato in precedenza. Per esempio: 

start_time := A_TickCount
Sleep, 1000
elapsed_time := A_TickCount - start_time
MsgBox, %elapsed_time% milliseconds have elapsed.



Script Settings

A_IsSuspended Contiene 1 se lo script e' sospeso e 0 altrimenti.
A_BatchLines (synonymous with A_NumBatchLines) The current value as set by SetBatchLines. Examples: 200 or 10ms (depending on format).
A_TitleMatchMode The current mode (1, 2, or 3) set by SetTitleMatchMode.
A_TitleMatchModeSpeed The current match speed (fast or slow) set by SetTitleMatchMode.
A_DetectHiddenWindows The current mode (On or Off) set by DetectHiddenWindows.
A_DetectHiddenText The current mode (On or Off) set by DetectHiddenText.
A_AutoTrim The current mode (On or Off) set by AutoTrim.
A_StringCaseSense The current mode (On, Off, or Locale) set by StringCaseSense.
A_FormatInteger The current integer format (H or D) set by SetFormat.
A_FormatFloat The current floating point number format set by SetFormat.
A_KeyDelay The current delay set by SetKeyDelay (always decimal, not hex). This delay is for the traditional SendEvent mode, not SendPlay.
A_WinDelay The current delay set by SetWinDelay (always decimal, not hex).
A_ControlDelay The current delay set by SetControlDelay (always decimal, not hex).
A_MouseDelay The current delay set by SetMouseDelay (always decimal, not hex). This delay is for the traditional SendEvent mode, not SendPlay.
A_DefaultMouseSpeed The current speed set by SetDefaultMouseSpeed (always decimal, not hex).
A_IconHidden Contains 1 if the tray icon is currently hidden or 0 otherwise. The icon can be hidden via #NoTrayIcon or the Menu command.
A_IconTip Blank unless a custom tooltip for the tray icon has been specified via Menu, Tray, Tip -- in which case it's the text of the tip.
A_IconFile Blank unless a custom tray icon has been specified via Menu, tray, icon -- in which case it's the full path and name of the icon's file.
A_IconNumber Blank if A_IconFile is blank. Otherwise, it's the number of the icon in A_IconFile (typically 1).


User Idle Time

A_TimeIdle Il numero di millisecondi che sono passati dall'ultimo input ricevuto dal sistema, quali mouse tastiera o altri input. Questo e' utile per determinare quando un utente non sta' al P.C. Questa variabile sara' in bianco a meno che il sistema non sia Windows 2000, XP, o successivi. Input fisici dell'utente, come pure input artificiali generati da uno script o da un programma (proprio come Send o MouseMove) azzerera' questo valore a zero. Poiche' questo valore si incrementa di 10 in 10, non cercare di controllare quando e' uguale ad un valore, ma soltanto quando e' maggiore o minore di un valore. Per esempio: IfGreater, A_TimeIdle, 600000, MsgBox, L'ultimo input ricevuto dal sistema e' stato 10 minuti fa'.
A_TimeIdlePhysical

Simile al precedente ma ignora gli input artificiali ognivolta che e' istallato il corrispondente (uncino/aggancio/richiamo) hook (keyboard or mouse). Se non e' istallato nessuno uncino, questa variabile e' equivalente ad A_TimeIdle. Se soltanto un uncino e' presente, soltanto quello verra' ignorato. A_TimeIdlePhysical potrebbe essere piu' utile diA_TimeIdle, per determinare se un utente e' realmente presente al P.C.



GUI Windows and Menu Bars

A_Gui Il numero della finestra GUI che ha mandato in esecuzione il current thread. Questa variabile e' in bianco fintanto che un Gui control, menu bar item, o un evento come GuiClose/GuiEscape ha mandato in esecuzione il thread corrente.
A_GuiControl Il nome della variabile associata la controllo GUI associato al  current thread. Se questo controllo non ha una associated variable, A_GuiControl conterra' inprimi 63 caratteri del  control's text/caption (questo viene spesso usato per evitare di dare un nome ad ogni pulsante). A_GuiControl e' vuota ogni volta che: 1) A_Gui e' vuota; 2) a GUI menu bar item or event such as GuiClose/GuiEscape launched the current thread; 3) the control lacks an associated variable and has no caption; or 4) The control that originally launched the current thread no longer exists (perhaps due to Gui Destroy).
A_GuiWidth
A_GuiHeight
Queste contengono l'altezza e la lunghezza della finestra GUI  quando e' contenuta  in una GuiSize subroutine. si applica all'area della finestra escluse le  title bar, menu bar, and borders.
A_GuiX
A_GuiY
These contain the X and Y coordinates for GuiContextMenu and GuiDropFiles events.
A_GuiControlEvent

A_GuiEvent is a
synonym for it in v1.0.36+.

Il tipo di evento che ha mandato in esecuzione il current thread. Se il  thread non e' stato lanciato attraverso una GUI action, questa variabile e' vuota. Altrimenti conterra' una delle seguenti strings:

Normal: L'evento e' stato richiamato attraverso un solo click-sinistro o attraverso una keystroke (arrow keys, TAB key, space bar, underlined shortcut key, etc.). Questo valore viene anche usato per gli elementi del menu bar e gli eventi speciali come GuiClose and GuiEscape.

DoubleClick: L'evento e' stato richiamato attraverso un doppio-click. Nota: Il primo click causa il richiamo del'evento Normal. In altre parole, la subroutine verra' lanciata due volte: una valta col primo click e una col secondo.

RightClick: Accade solo per GuiContextMenu, ListViews, e TreeViews.

Context-sensitive values: For details see GuiContextMenu, GuiDropFiles, Slider, MonthCal, ListView, and TreeView.

A_EventInfo
[v1.0.36+]

Contains additional information about the following events:

Note: Unlike variables such as A_ThisHotkey, each thread retains its own value for A_Gui, A_GuiControl, A_GuiX/Y, A_GuiControlEvent, and A_EventInfo. Therefore, if a thread is interrupted by another, upon being resumed it will still see its original/correct values in these variables.


Hotkeys, Hotstrings, and Custom Menu Items

A_ThisMenuItem The name of the most recently selected custom menu item (blank if none).
A_ThisMenu The name of the menu from which A_ThisMenuItem was selected.
A_ThisMenuItemPos A number indicating the current position of A_ThisMenuItem within A_ThisMenu. The first item in the menu is 1, the second is 2, and so on. Menu separator lines are counted. This variable is blank if A_ThisMenuItem is blank or no longer exists within A_ThisMenu. It is also blank if A_ThisMenu itself no longer exists.
A_ThisHotkey

The key name of the most recently executed hotkey or hotstring (blank if none), e.g. #z. This value will change if the current thread is interrupted by another hotkey, so be sure to copy it into another variable immediately if you need the original value for later use in a subroutine.

When a hotkey is first created -- either by the Hotkey command or a double-colon label in the script -- its key name and the ordering of its modifier symbols becomes the permanent name of that hotkey.

A_PriorHotkey Same as above except for the previous hotkey. It will be blank if none.
A_TimeSinceThisHotkey The number of milliseconds that have elapsed since A_ThisHotkey was pressed. It will be -1 whenever A_ThisHotkey is blank.
A_TimeSincePriorHotkey The number of milliseconds that have elapsed since A_PriorHotkey was pressed. It will be -1 whenever A_PriorHotkey is blank.
A_EndChar The ending character that was pressed by the user to trigger the most recent non-auto-replace hotstring. If no ending character was required (due to the * option), this variable will be blank.


Operating System and User Info

ComSpec
[v1.0.43.08+]
Contains the same string as the environment's ComSpec variable (e.g. C:\Windows\system32\cmd.exe). Often used with Run/RunWait. Note: there is no A_ prefix on this variable.
A_Temp
[v1.0.43.09+]
The full path and name of the folder designated to hold temporary files (e.g. C:\DOCUME~1\UserName\LOCALS~1\Temp). It is retrieved from one of the following locations (in order): 1) the environment variables TMP, TEMP, or USERPROFILE; 2) the Windows directory. On Windows 9x, A_WorkingDir is returned if neither TMP nor TEMP exists.
A_OSType The type of Operating System being run.  Either WIN32_WINDOWS (i.e. Win95/98/ME) or WIN32_NT (i.e. WinNT, Win2k, WinXP, and maybe some beyond those).
A_OSVersion

One of the following strings: WIN_2003, WIN_XP, WIN_2000, WIN_NT4, WIN_95, WIN_98, WIN_ME. For example:

if A_OSVersion in WIN_NT4,WIN_95,WIN_98,WIN_ME ; Note: No spaces around commas.
{
MsgBox This script requires Windows 2000/XP or later.
ExitApp
}
A_Language The system's default language, which is one of the strings from the language table.
A_ComputerName The network name of the computer.
A_UserName The logon name of the current user.
A_WinDir The windows directory. For example: C:\Windows
A_ProgramFiles
or ProgramFiles
The Program Files directory (e.g. C:\Program Files). In v1.0.43.08+, the A_ prefix may be omitted, which helps ease the transition to #NoEnv.
A_AppData
[v1.0.43.09+]
The full path and name of the folder containing the current user's application-specific data.
A_AppDataCommon
[v1.0.43.09+]
The full path and name of the folder containing the all-users application-specific data.
A_Desktop The full path and name of the folder containing the current user's desktop files.
A_DesktopCommon The full path and name of the folder containing the all-users desktop files.
A_StartMenu The full path and name of the current user's Start Menu folder.
A_StartMenuCommon The full path and name of the all-users Start Menu folder.
A_Programs The full path and name of the Programs folder in the current user's Start Menu.
A_ProgramsCommon The full path and name of the Programs folder in the all-users Start Menu.
A_Startup The full path and name of the Startup folder in the current user's Start Menu.
A_StartupCommon The full path and name of the Startup folder in the all-users Start Menu.
A_MyDocuments The full path and name of the current user's "My Documents" folder. Unlike most of the similar variables, if the folder is the root of a drive, the final backslash is not included. For example, it would contain M: rather than M:\
A_IsAdmin If the current user has admin rights, this variable contains 1. Otherwise, it contains 0. Under Windows 95/98/Me, this variable always contains 1.

A_ScreenWidth
A_ScreenHeight

The width and height of the primary monitor, in pixels (e.g. 1024 and 768).

To discover the dimensions of other monitors in a multi-monitor system, use SysGet.

To instead discover the width and height of the entire desktop (even if it spans multiple monitors), use the following example (but on Windows 95/NT, both of the below variables will be set to 0):
SysGet, VirtualWidth, 78
SysGet, VirtualHeight, 79

In addition, use SysGet to discover the work area of a monitor, which can be smaller than the monitor's total area because the taskbar and other registered desktop toolbars are excluded.

A_IPAddress1 through 4 The IP addresses of the first 4 network adapters in the computer.


Misc.

A_Cursor

Il tipo di cursore del mouse. Sara' una delle seguenti parole: AppStarting, Arrow, Cross, Help, IBeam, Icon, No, Size, SizeAll, SizeNESW, SizeNS, SizeNWSE, SizeWE, UpArrow, Wait, Unknown. The acronyms used with the size-type cursors are compass directions, e.g. NESW = NorthEast+SouthWest. The hand-shaped cursors (pointing and grabbing) are classfied as Unknown.

Known limitation (in versions prior to 1.0.42.02 or on Windows 95): If this variable's contents are fetched repeatedly at a high frequency (i.e. every 500 ms or faster), it will probably disrupt the user's ability to double-click. There is no known workaround.

A_CaretX
A_CaretY

The current X and Y coordinates of the caret (text insertion point). The coordinates are relative to the active window unless CoordMode is used to make them relative to the entire screen. If there is no active window or the caret position cannot be determined, these variables are blank.

The following script allows you to move the caret around to see its current position displayed in an auto-update tooltip. Note that some windows (e.g. certain versions of MS Word) report the same caret position regardless of its actual position.

#Persistent
SetTimer, WatchCaret, 100
return
WatchCaret:
ToolTip, X%A_CaretX% Y%A_CaretY%, A_CaretX, A_CaretY - 20
return

If the contents of these variables are fetched repeatedly at a high frequency (i.e. every 500 ms or faster), the user's ability to double-click will probably be disrupted. There is no known workaround.

Clipboard The contents of the OS's clipboard, which can be read or written to. See the Clipboard section.
ClipboardAll The entire contents of the clipboard (such as formatting and text). See ClipboardAll.
ErrorLevel See ErrorLevel.
A_LastError The result from the OS's GetLastError() function. For details, see DllCall() and Run/RunWait.


Loop

A_Index Questo riporta il numero della iterazione corrente del loop (a 64-bit integer). Per esempio: la prima volta che lo script esegue il corpo di un loop, questa variabile conterra' il valore 1. See Loop for details.
A_LoopFileName, etc. This and other related variables are valid only inside a file-loop.
A_LoopRegName, etc. This and other related variables are valid only inside a registry-loop.
A_LoopReadLine See file-reading loop.
A_LoopField See parsing loop.

Environment Variables vs. "Normal" Variables

Le variabili d'ambiente sono aggiornate dal sistema operativo. Puoi vederne una lista dal command prompt digitando SET e premendo Enter.

Uno script puo' creare nuove variabili d'ambiente o cambiare il contenuto di esse con EnvSet. Tuttavia, alcune aggiunte o cambiamenti sono privati; e non sono visti dal resto del sistema. Una eccezione e' quando uno script lancia un programma (persino un'altro script) tramite Run o RunWait: tali programmi ereditano una copia delle variabili d'ambiente dello script genitore, incluse le private.

In v1.0.43.08+, e' raccomandato che tutti i nuovi scripts richiamino le variabili d'ambiente attraverso EnvGet, OutputVar, Path. per spiegazioni guardare #NoEnv.

Variable Capacity and Memory

 

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