![]() |
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.
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
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). 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 In v1.0.31+, nelle sub-expression e
nei references come
Array%i% possono essere uniti con altre item. Per esempio: 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() |
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.
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.
| 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. |
| 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. |
| 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 | |
| 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 |
| 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). |
| 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. |
| 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.
| 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. |
| 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. |
| 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 |
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): 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. |
| 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 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. |
| 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. |
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.
Download | Documentation | Changelog | Support | Forum | X Traduttori