![]() |
Questa breve descrizione ti aiutera' ad iniziare a scrivere da subito le tue proprie MACRO e HOTKEYS.
Ogni script e' un normale file di testo, contenente i comandi che verranno eseguiti dal programma (AutoHotKey.exe).Uno script puo' anche contenere hotkeys e hotstrings e perfino essere costituito solamente da essi. Tuttavia, in assenza di hotkeys e di hotstrings, uno script effettuera' in sequenza i relativi ordini dal alto al basso quando verrà lanciato.
Il simbolo # corrisponde al tasto Windows, pertanto #space
significa
spingere il tasto Windows e la barra spaziatrice per attivare la
Hotkey. I :: significano che i comandi che seguono verranno eseguiti
ogni volta che questa hotkeys viene premuta, in questo caso per andare
al sito di google. per provare questo script continuare come segue:
Note: script multipli possono essere lanciati simultaneamente, ognuno con la propria Tray icon, ma ogni scritto puo' avere piu' Hotkeys e Hotstrings al suo interno
Il comando RUN viene usato per lanciare un programma, documento, URL, o una scorciatoia. qui' ci sono degli esempi comuni:
Run notepad
run c:\My documents\address list.doc
run c:\My documents\My shortcut.lnk
run www.yahoo.com
run mailto:qualcuno@qualchedominio.com
Una Hotkey puo' essere assegnata ad ognuno degli esempi ,
includendo una Hotkey
label (etichetta). nell'esempio seguente la Hotkey assegnata
e' win+n, nel secondo e' control+Alt+c:
#n::run notepadI precedenti esempi sono conosciuti come "comandi su singola linea" in quanto consistono in un singolo comando, per avere piu' di un comando eseguito da un a Hotkey, mettere nella prima linea la definizione della Hotkey e mettere all'ultima riga return. Per Es:
^!c::run calc.exe
#n::
Run http://www.google.com
Run Notepad.exe
return
Se il programma o il documento non sono integrati con il sistema, specificare il percorso completo per lanciarlo:
Run %A_ProgramFiles%\Winamp\Winamp.exeNel suddetto esempio, %A_ProgramFiles% è una built-in variable (variabile incorporata).
Per avere uno script che aspetti la chiusura del programma o del documento per continuare, usa RunWait anziche' Run; nel prossimo esempio la MsgBox non comparira' finche' non verra' chiuso Notepad.
RunWait Notepad
MsgBox L'utente ha terminato (Notepad e' stato chiuso).
Per imparare di piu' su come lanciare i programmi -- come passare parametri, specificare la cartella di lavoro, e scoprire il codice di uscita del programma clicca qui'.
I keystrokes sono inviati alla prima finestra attiva usando il comando send. Nell' esempio che segue, Win+s diventa un Hotkey per scrivere una firma. Assicurati che una finestra tipo editor o messaggio e-mail sia attiva prima di premere Win+s:
#s::
Send Sincerely,{Enter}John Smith
return
Nel suddetto esempio tutte le lettere sono inviate testualmente tranne {Enter}, che simula la pressione del tasto enter. Il prossimo esempio illustra alcuni dei caratteri speciali piu comuni
Send ^c!{tab}pasted:^v
La precedente linea invia un Control+C seguito da un Alt+Tab seguito dalla stinga "pasted:" seguita da un Control+V. Guarda il comando Send per un lista completa dei segni e dei tasti.
In fine, keystrokes possono possono essere inviati in risposta di abbreviazioni da te scelte, chiamate hotstrings. Per esempio, ogni volta che scrivi Btw seguito da uno spazio o una virgola, la riga seguente lo rimpiazzerà con "By the way":
::btw::by the way
Mouse Clicks: Per inviare un mouse click a una finestra e' prima necessario determinare le coordinate X e Y all' interno delle quali il click dovrebbe essere fatto. Questo puo' essere fatto sia con AutoScriptWriter che con Window Spy, inclusi entrambi in AutoHotkey. Il prossimo passo riguarda l' applicazione del metodo Window Spy:
Per muovere il mouse senza cliccarlo usa MouseMove. Per trascinare il mouse, usa MouseClickDrag.
Per attivare una finestra (metterla in primo piano), usa WinActivate. Per controllare se una finestra esiste, usa IfWinExist o WinWait. Il seguente esempio illustra questi comandi:
IfWinExist Untitled - Notepad
{
WinActivate } else { Run Notepad
WinWait Untitled - Notepad WinActivate }
Il precedente esempio prima cerca ogni finestra esistente il cui titolo sia "Untitled - Notepad" (case sensitive). Se viene trovata tale finestra, viene attivata. Altrimenti viene lanciato Notepad e lo script aspetta che appaia la finestra Untitled, a questo punto verra' attivata. L' esempio utilizza anche il last found window per evitare la necessita' del titolo della finestra con ogni WinActivate.
Alcuni altri comandi window comunemente usati sono:
- IfWinActivate:
controlla se la finestra specificata e' attiva.
- WinWaitActive:
aspetta che la finestra specificata diventi attiva (usata tipicamente
dopo un keystroke tipo Control-F).
- WinClose:
chiude la finestra specificata
- WinMove:
muove o ridimensiona la finestra specificata
- WinMinimize,
WinMaximize,
WinRestore:
riduce a icona, ingrandisce o ripristina la finestra specificata.
Il seguente esempio mostra una finestra di dialogo con due bottoni (YES e NO):
MsgBox, 4, , Vuoi continuare?
IfMsgBox, No
return
; Altrimenti, se l'utente clicca YES.
MsgBox Hai cliccato YES.
Usa il comando InputBox per sollecitare l' utente a scrivere una stringa. Usa FileSelectFile o FileSelectFolder per sceglier un file o una cartella. Per funzioni piu' avanzate, usa il comando Gui per creare personalizzazioni e interfaccia utente.
Nota: potresti aver notato dall' esempio precedente che la prima virgola di ogni comando puo essere omessa. Per esempio:
MsgBox Questo e' corretto. (la prima virgola puo' essere omessa)
MsgBox, anche questo e' corretto.
Una variabile e' un area della memoria nella quale gli script immagazzinano un valore. Tutte le variabili sono immagazzinate come stringhe alfanumeriche, una variabile contenente solo numeri (con un punto decimale opzionale) e' automaticamente trasformata in un numero quando un operazione matematica o di comparazione lo richiede. Per contro, il risultato di un operazione matematica e' riconvertita in una stringa quando e' necessario che questa venga immagazzinata in una variabile.
Con l'eccezione delle variabili locali nelle FUNZIONI, tutte le variabili sono globali; il loro contenuto puo essere letto o alterato da ogni parte dello script. In piu', le variabili non sono dichiarate; divengono reali semplicemente utilizzandole (ed ogni variabile nasce vuota/bianca).
Per assegnare una stringa ad una variabile, segui l' esempio:
MyVar1 = 123
MyVar2 = my string
Per comparare il contenuto di una variabile con un numero o una stringa, segui l' esempio:
if MyVar2 = my string
{
MsgBox MyVar2 contiene la stringa "my string".
}
if MyVar1 >= 100
{
MsgBox MyVar1 contiene %MyVar1%, che e' un numero maggiore o uguale a 100.
}
Nell MsgBox sopra, si noti che la seconda occorrenza di MyVar1 e' inclusa nei segni percent. Questo mostra il contenuto di MyVar1. La stessa tecnica puo' essere usata per copiare il contenuto di una variabile ad un altra. Per esempio:
MyVarConcatenated = %MyVar1% %MyVar2%
La linea immagazzina la stinga "123 my string" (senza le virgolette) nella variabile MyVarConcatenated.
Per comparare il contenuto di una variabile con un altra considera questo esempio:
if (ItemCount > ItemLimit + 1)
{
MsgBox Il valore di ItemCount, che e' %ItemCount%, e' maggiore di %ItemLimit% + 1.
}
Nota che la prima linea dell'esempio contiene parentesi. Le parentesi significano che il controllo IF contiene una espressione. Senza questa, la linea sara' considerata una "controllo IF senza espressione", e questo necessiterà dei segni percent intorno a ItemLimit. Sono limitati ad una singola operazione di confronto; per questo non possono contenere operazioni matematiche o i simboli tipo "AND" e "OR".
Math: per operare un operazione matematica, usa l'operatore "colon-equal" (:=) per assegnare il risultato di un espressione ad una variabile come nell' esempio che segue:
NetPrice := Price * (1 - Discount/100)
Clipboard: La variabile chiamata Clipboard e' speciale perché' contiene il testo corrente sulla clipboard (l'ultima cosa che hai copiato). Nondimeno, puo' essere usato come se fosse una normale variabile. Per esempio la righe che segue mostra contenuto della clipboard:
MsgBox %clipboard%
Per cambiare il contenuto della clipboard, considera il seguente esempio, che sostituisce il contenuto corrente con il nuovo testo:
clipboard = A line of text.`r`nA second line of text.`r`n
I due caratteri , `r e `n (accento seguito da la lettera "r" o "n") sono usati per indicare due caratteri speciali: carriage return e linefeed. Questi due caratteri iniziano una nuova linea di testo come se l'utente avesse premuto il tasto Enter.
Per accodare testo ad un clipboard (o qualunque altra variabile), segui questo esempio:
clipboard = %clipboard% e qui ci va il testo da collegare
Leggere la sezione clipboard e variables per i dettagli.
Per ripetere un azione piu' volte consecutivamente, il metodo e'
il Loop.
Il seguente esempio mostra un MsgBox
tre volte:
Loop 3Si puo' anche specificare una variabile dopo la parola Loop, cosa utile in situazioni dove il numero delle iterazioni e determinato da qualche parte all' interno dello script:
{
MsgBox Questo messaggio comparira' tre volte.
}
Loop %RunCount%
{
Run C:\Check Server Status.exe
Sleep 60000 ; aspetta 60 secondi.
}
Nell' esempio, il Loop e' ripetuto il numero di volte specificato, a meno che RunCount contenga 0, nel qual caso il loop e' interamente skippato. Un Loop puo' anche auto concludersi quando uno o piu' condizioni cambiano, come mostrato qui sotto:
Loop ; se non viene specificato alcun numero, si ottiene un loop infinito, a meno che non vi sia al suo interno un "break" o un "return".
{
PixelGetColor, Color, 11, 22
if Color = 0xEEAA99 ; se lo screen pixel e' di questo colore
break ; il loop si interrompe.
; altrimenti,continua a cliccare L' OK button fintanto che il pixel non cambi colore
ControlClick, OK, Title of Target Window
}
L' esempio e' sostanzialmente identico a cio' che viene
chiamato un "while...do" Loop. La frase "while...do" indica che il loop
fa una determinata azione mentre (while)
una determinata condizione rimane vera. In questo caso, il Loop
continua a premere un bottone mentre il pixel e' del colore sbagliato.
Quando appare il colore giusto il Loop si ferma con il comando Break,
che causa l'esecuzione di un salto alla linea succesiva al segno di
chiusura del Loop.
Gli esempi mostrati precedentemente sono Loop generici (general-purpose). Per necessita' piu' specifiche, considera uno dei seguenti Loop:
File-reading/writing loop: Richiama le linee in un file di testo, una per volta. Puo' essere usato per trasformare un file in un formato differente linea-per-linea. Puo' essere usato anche per cercare linee che rispondano al tuo criterio di ricerca.
Files and folders loop: Richiama il file o la cartella specificata, una per volta. Questo consente l' esecuzione di un operazione in ogni file o cartella che risponda ai criteri impostati.
Parsing loop: Richiama substrings dalle stringhe una per volta. Questo consente a stringhe tipo "Red,Green,Blue" di essere facilmente divise nei suoi tre campi.
Registry loop: Richiama il valore della subkey del registro specificato, uno alla volta.
Per aggiungere testo alla fine di un file (o crearne uno
nuovo), usa FileAppend
come mostrato nell seguente esempio. Nota che si usa `n (linefeed) per
iniziare una nuova riga di testo in seguito:
FileAppend, A line of text to append.`n, C:\My Documents\My Text File.txt
per sovrascrivere un file esistente, usa FileDelete
invece di FileAppened. Per esempio:
FileDelete, C:\My Documents\My Text File.txtAlcuni dei comandi file e folder piu comunemente usati sono:
Guarda la command list per una panoramica di ogni comando.
Download | Documentation | Changelog | Support | Forum | X Traduttor