Guida Autoit

by Redskul

« Older   Newer »
 
  Share  
.
  1. god121
        Like  
     
    .

    User deleted


    Parte base


    Parte Base



    Iniziare a Scriptare
    Ora vedremo il primo script in autoIt, per fare questo create un nuovo file con estensione .au3(se premete il tasto destro del mouse e andate su Nuovo->AutoItV3 Script , verrà creato automaticamente)
    Dopo aver creato il file selezionatelo e premete il tasto destro del mouse e cliccate su Edit Script
    A questo punto si dovrebbe aprire l’editor predefinito cioè SciTE e qui possiamo cominciare a programmare vedendo le prime e banali funzioni.


    I Commenti
    I commenti sono una parte molto importante per TUTTI i programmatori, i commenti vi permettono di riprendere lavori che avete lasciato da tempo e di ricapirli o passando i sorgenti ad altri programmatori voi fate in modo che loro possono capire il vostro lavoro più facilmente;permettono anche di descrivere determinate funzioni o su l’utilizzo del programma permettendo di aggiungere delle info; vediamo come si usano:
    I commenti vanno SEMPRE preceduti dal ; quindi tutti i caratteri,stringhe o altro dopo il punto e virgola non è nulla per il compilatore cioè non viene considerato.
    Esempio:
    ;Questo è un commento, lungo questa linea io posso scrivere quello che mi pare.
    Ci sono anche altri tipi di commenti che permettono di commentare più linee, cioè #comments-start o #comments-end ( più breve #cs o #ce)
    Esempio:
    #Cs
    Questa parte di testo è tutta un commento
    Qui posso scrivere quello che mi pare
    Autore: Red Skull 92
    Data: 01/01/08
    Web: www.redskull92.wordpress.com
    Mail: [email protected]
    #Ce
    Da qui’ in poi non posso più scrivere nulla che non sia AutoIt, quindi i commenti partono dalla istruzione Cs alla #Ce

    Hello World
    Ora vedremo la funzione MsgBox, che letteralmente fa comparire a schermo un messaggio visuale.
    Scrivete nel foglio questo:
    MsgBox(0,”First Script”,”Hello World”)
    Mi raccomando non copiate ma scrivete di vostra mano in modo in modo da assimilare la sintassi e le funzioni in modo completo.
    Ora vediamo in particolare questa funzione:
    • Lo 0 indica come deve essere il messaggio visuale, lo 0 fa comparire un messaggio semplice con solo il pulsante Ok;combinando i vari numeri è possibile avere molti effetti.
    Ecco qui la tabella completa:
    Tabella Pulsanti
    0 Fa Comparire un Pulsante con Scritto Ok
    1 Fa comparire due Pulsanti con Scritto Ok e Cancella
    2 Fa comparire tre Pulsanti con scritto Annulla , Indietro e Ignora
    3 Fa comparire tre Pulsanti con scritto Si , No e Cancella
    4 Fa comparire due Pulsanti con scritto Si e No
    5 Fa comparire due Pulsanti con scritto indietro e Cancella
    6 Fa comparire tre Pulsanti con scritto cancella, riprova e continua







    Tabella Icone
    0 Nessuna Icona
    16 Icona di Stop
    32 Icona di Domanda
    48 Icona di esclamazione
    64 Icona di Informazione


    Per far comparire per esempio un pulsante con scritto Ok e l’icona di informazione basta sommare i 2 valori
    Quindi 64 + 0 quindi il MsgBox verrà così: MsgBox(64,”Titolo”,”Testo”)
    Provate tante combinazioni in modo da verificare le diverse possibilità di interazione con l’utente.
    Oppure per far comparire un messaggio con il pulsante ok e l’icona di esclamazione sommiamo i valori 48 + 0 : MsgBox(48,”Titolo”,”Testo”)
    Esiste anche un altro parametro che è possibile inserire ma è opzionale, cioè il tempo prima che il messaggio scomparisca da solo un esempio pratico:
    MsgBox(48,”Attenzione”,”Questo messaggio si auto confermerà tra 5 secondi ! !”,5)
    Come potete vedere alla fine del testo abbiamo messo una virgola (per separare i vari parametri) e dopo un 5 cioè che il messaggio scomparirà dopo 5 secondi.
    Le Variabili
    Le variabili sono dei luoghi in memoria dove è possibile immagazzinare o prelevare velocemente dati e informazioni.
    Le variabili in AutoIt incomincia sempre con il simbolo $ e può essere chiamata con lettere,numeri e il carattere di sottolineatura _ questi sono alcuni esempi di come si possa chiamare una variabile:
    $ciao
    $hola_ciao
    $io_sono_Red_Skull_92
    Questi invece sono variabili che non posso essere chiamate perché non rispettano la regola di prima:
    $123 (inizia con numeri)
    $Io Sono Red Skull 92 (Contiene spazi)
    Facciamo dei piccoli esempi su come utilizzare le variabili:
    $variabile1=2
    $variabile2=3
    $variabile3=$variabile1+$variabile2
    MsgBox(0,”Calcolo di 2 variabili”,$variabile3)

    Vediamo in dettaglio questo script.
    Nella prima riga abbiamo assegnato alla variabile “$variabile1” il valore 2 quindi da quell’istante la variabile $variabile1 conterrà il numero 2 al suo interno.
    Nella seconda riga abbiamo assegnato alla variabile “$varibile2” il valore 3.
    Nella terza riga abbiamo fatto qualcosa di diverso, abbiamo assegnato alla variabile “$variabile3” il risultato della somma tra $variabile1 e $variabile2 quindi la $variabile3 conterrà il risultato cioè 5.
    Nella quarta riga facciamo stampare un messaggio visuale con il titolo “Calcolo di 2 variabili” e come testo il contenuto della variabile “$variabile”.
    Vediamo i segni di operazione: + (addizione) ; - (sottrazione); / (divisione); *( moltiplicazione); = (assegno)
    N.B. Nella funzione MsgBox non abbiamo messo “$variabile3” tra apici ma senza gli apici questo perché se l’avessimo messa dentro gli apici il messaggio stampato sarà $variabile3 e non il contenuto, quindi ricordate che quando si vuole stampare il contenuto di una variabile non bisogna metterla dentro gli apici “”.
    Le variabili possono contenere qualsiasi dato, quindi anche stringhe, ora vedremo il concatenamento di stringhe e la gestione delle stesse.
    Come abbiamo specificato sopra le variabili possono contenere ogni tipo di dati e valori quindi anche l’immagazzinamento di stringhe, vediamo come tramite un piccolo script:
    $var1=”Hello ”
    $var2=”World”
    $var3=$var1&$var2
    MsgBox(0,”Ciao mondo”,$var3)
    Vediamo in dettaglio questo script.
    Nella prima riga abbiamo assegnato alla variabile ”$var1” la stringa “Hello “
    Nella seconda riga abbiamo assegnato alla variabile “$var2” la stringa “World”
    Nella terza riga abbiamo assegnato alla variabile “$var3” il contenuto della variabile “$var1” concatenata al contenuto della variabile “$var2”, il carattere & (e commerciale) serve per concatenare il contenuto delle variabili tra loro.
    Nella quarta riga facciamo stampare a video il contenuto della variabile “$var3”
    Il risultato del messaggio a video sarà questo: “Hello World”
    Ricordatevi che le stringhe vanno SEMPRE messe dentro gli apici
    N.B. Come potete vedere nella prima variabile dopo “Hello ” ho lasciato uno spazio all’interno della stringa, questo perché altrimenti il messaggio che sarebbe venuto fuori sarebbe stato “HelloWorld” quindi diciamo che nelle variabili vengono “salvati” anche gli spazzi.
    Ora vediamo alcuni piccoli esempi su come utilizzare le variabili in vari casi.
    $var1=”AutoIt”
    $var2=”R0x4”
    MsgBox(0,”Concatenamento direttamente nel MsgBox”,$var1&” ”&$var2)
    Questo script è diverso da quelli visti fin’ora vediamo perché.
    Le prime 2 righe già conosciamo cosa significano quindi passiamo subito alla terza.
    Vediamo che è la solita funzione per stampare a schermo un messaggio, lo 0 fa comparire solo un messaggio con il pulsante Ok,Il titolo:”Concatenamento direttamente nel MsgBox” ora vediamo una cosa molto strana nel messaggio che spunterà, infatti se eseguiamo lo script vedremo che uscirà fuori il messaggio: AutoIt R0x4.
    Questo perché Il MsgBox esegue direttamente il concatenamento delle stringhe(come tutto il resto delle funzioni) ;come potete vedere nella prima stringa io non ho messo uno spazio alla fine questo perché viene fatto direttamente nella MsgBox perché io ho concatenato $var1 con uno spazio e lo spazio a $var2.
    Eseguite tanti piccoli esercizi per apprendere questa parte FONDAMENTALE della programmazione, per esempio, create degli script con qui immagazzinate stringhe e numeri e di volta in volta le concatenate in modo da avere diversi effetti.
    N.B. Ogni volta che creiamo una variabile si occupa spazio in memoria rallentando il programma, con questi piccoli script non si vede minimamente ma con programmi grandi con molte variabili potrebbe essere una scelta decisiva quella di usare direttamente la soluzione in una funzione.


    Gli Array
    Un array è una variabile contenente serie di elementi di dati. Ciascun elemento di questa variabile può
    essere letta da un numero di indice.

    Ricordo in oltre che ogni array deve essere preceduto o da Dim o da Local (Utilizzato per una funzione) o
    da Global (Utilizzato per tutto lo script).

    Questo è come si presenta un array:

    Dim $nome_array[valori]=[valore1,valore2,valore3,valore4,valore5,etc.]
    Vi faccio un esempio:

    Dim $arr[2]

    $arr[0]=”Io sono”

    $arr[1]=”un array”

    MsgBox(0,”Array”,$arr[0]&” “&$arr[1])

    Questo è uno script dove viene dichiarato un array di 2 elementi (ricordo che il conteggio dei valori parte da
    0 quindi sarà sempre inferiore di 1 dal numero di valori reali) nell’indice 0 viene memorizzato il valore “Io
    sono” e nell’ indice 1 viene memorizzato il valore “un array” tutto questo richiamato all’interno di un
    MsgBox e separato da uno spazio (altrimenti verrebbe tutto attaccato).

    E’ possibile creare array anche in questo modo:

    Dim $arr[3]=[“Guida ”,”By ”,”Red Skull 92”]

    MsgBox(0,”Array Breve”,$arr[0]&$arr[1]&$arr[2])

    In questo modo viene molto più breve lo script e anche molto più sistemato.

    Vi conviene fare molta pratica con gli array perché vi saranno molto di aiuto durante la programmazione.

    RICORDO ANCORA UNA VOLTA CHE NON DOVETE ASSOLUTAMENTE COPIARE E INCOLLARE GLI ESEMPI
    MA DOVETE SCRIVERLI VOI A MANO IN QUESTO MODO RICORDERETE IN MODO PIU’ SEMPLICE LE VARIE
    FUNZIONI E PROCEDURE.

    Il Ciclo For…Next
    Come ogni linguaggio di programmazione l’autoIt ha degli ” amici”’ IMPORTANTI cioè i cicli in particolare ora parleremo del ciclo For.
    Il ciclo for verrà in vostro “aiuto” in tantissime occasioni (più di quante pensiate) ,
    viene utilizzato per qualsiasi cosa, la maggior parte delle volte per semplificare la vita.

    Viene utilizzato nel seguente modo:
    For $variabile = [valore iniziale] To [valore finale] (Step [valore di progressione])

    . . . . .

    Next

    Ora vediamo il suo funzionamento con uno script:

    For $i = 1 To 5

    MsgBox(0,"Il Mio Primo Ciclo",$i)

    Next

    Come potete notare da questo piccolo script viene visualizzato per 5 volte un messaggio contenente un
    numero che viene progressivamente aumentato di volta in volta.

    Il ciclo For non fa altro che aumentare il numero che risiede nella variabile $i mentre dopo il comando To
    viene immesso il numero che si vuol far raggiungere al valore immagazzinato nella variabile $i per poi
    terminare lo script.

    Se per esempio dopo To avremmo immesso 1000 sarebbero apparsi 1000 messaggi con dentro il contenuto
    della variabile $i che giustamente veniva aumentato ogni volta.

    Il ciclo For aiuta in modo incredibile il programmatore a mantenere il sorgente il più breve possibile vi
    faccio un esempio su come utilizzare saggiamente il ciclo For.

    ;Tabellina del 2 By Red Skull 92

    MsgBox(0,"Inizio","Incominciamo")

    MsgBox(0,"Tabellina del 2","2 x 0 = "&Execute(2*0))

    MsgBox(0,"Tabellina del 2","2 x 1 = "&Execute(2*1))

    MsgBox(0,"Tabellina del 2","2 x 2 = "&Execute(2*2))

    MsgBox(0,"Tabellina del 2","2 x 3 = "&Execute(2*3))

    MsgBox(0,"Tabellina del 2","2 x 4 = "&Execute(2*4))

    MsgBox(0,"Tabellina del 2","2 x 5 = "&Execute(2*5))

    MsgBox(0,"Tabellina del 2","2 x 6 = "&Execute(2*6))

    MsgBox(0,"Tabellina del 2","2 x 7 = "&Execute(2*7))

    MsgBox(0,"Tabellina del 2","2 x 8 = "&Execute(2*8))

    MsgBox(0,"Tabellina del 2","2 x 9 = "&Execute(2*9))

    MsgBox(0,"Tabellina del 2","2 x 10 = "&Execute(2*10))

    MsgBox(0,"Fine","La tabellina è finita")

    Come potete notare lo script è venuto molto lungo e soprattutto è davvero molto scomodo da scrivere,in
    questo caso il ciclo for viene in nostro soccorso:

    ;Tabellina del 2 utilizzando il ciclo for By Red Skull 92

    MsgBox(0,"Inizio","incominciamo")

    For $i=0 To 10

    MsgBox(0,"La Tabellina del 2 utilizzando il ciclo for","2 x "&$i&" =
    "&Execute(2*$i))

    Next

    MsgBox(0,"Fine","La tabellina è finita")

    Bè credo si noti la differenza, uscirà lo stesso risultato di prima ma in questo modo abbiamo risparmiato
    molta fatica, ora vediamo in dettaglio quello che abbiamo fatto:

    MsgBox(0,”Inizio”,”Incominciamo”) : Questo messaggio viene visualizzato una sola volta perché non è stato
    inserito all’interno del ciclo.

    For $i = 0 To 10 : Questa riga inizializza il ciclo dicendo di aumentare il valore immagazzinato in $i fino a
    quando arriva a 10.

    MsgBox(0,”La Tabellina del 2 utilizzando il ciclo for”,”2 x ”&$i&” = “&Execute(2*$i)) : Questa parte è
    praticamente la parte principale dello script, la funzione MsgBox è inserita dentro il ciclo quindi verrà
    ripetuta finche esso non cesserà; nella parte “2 x “&$i Facciamo in modo che ogni volta che il MsgBox
    comparirà visualizzerà dopo 2 x il valore contenuto in $i quindi ogni volta si visualizzerà 2 x 0 , 2 x 1 , 2 x 2,
    etc.; nella parte Execute(2 * $i) viene effettuata una semplice moltiplicazione utilizzando la funzione
    Execute cioè viene effettuata la moltiplicazione prendendo come secondo valore il contenuto della variabile
    $i (che ovviamente verrà aumentato di volta in volta)

    Next : Questo comando deve essere immesso alla fine delle istruzioni che stanno nel ciclo cioè dice al
    compilatore che dopo il Next le funzioni sono fuori dal ciclo e quindi non devono essere ripeute.

    MsgBox(0,”Fine”,”La tabellina è finita”) : La funzione MsgBox è stata messa dopo il comando Next e quindi
    non viene considerata dentro il ciclo e quindi viene eseguita una sola volta per poi terminare lo script.

    In poche parole avviene questo all’interno dello script:

    Ogni volta che esegui il ciclo aumenta di 1 la variabile $i finchè non diventa uguale a 10, una volta arrivato
    termina il ciclo.

    Del ciclo FOR abbiamo spiegato tutto tranne una cosa: Il comando Step che abbiamo scritto all’inizio,
    tradotto dall’inglese significa passo bene appunto indica di quanto bisogna aumentare il contenuto della
    variabile, facciamo un esempio veloce veloce :

    For $p = 10 To 0 Step -1

    MsgBox(0,"Count Down",$p)

    Next

    Come possiamo notare anziché aumentare la variabile la facciamo diminuire fino a che non arriva a 0

    Di Default Step è settato a 1 (cioè a ogni ciclo aumenta la variabile di 1) ma possiamo cambiare il valore per
    esempio:

    For $p = 0 To 20 Step 2

    MsgBox(0,"A 2 A 2",$p)

    Next

    Con questo script aumentiamo il contenuto della variabile $p a 2 a 2 fino ad arrivare a 20.

    Ricordo che i cicli sono MOLTO IMPORTANTI per un programmatore quindi se volete davvero imparare a
    fondo ad utilizzarli consiglio moltissima pratica realizzando programmini che possono sembrare stupidi
    ma che invece vi aiuteranno a capire meglio. Ricordo in oltre di scrivere a mano ogni script di questa mia
    guida in modo da assimilare le funzioni e le caratteristiche del linguaggio.

    Il ciclo While…Wend

    Il ciclo While è un ciclo che può continuare all’infinito finché la sua espressione non è Falsa.
    Vediamo Come è composto il ciclo:

    While <condizione>


    Wend

    Vi faccio un esempio pratico:
    $var=0
    While $var < 10
    MsgBox(0,"While...Wend","$var è uguale a "&$var)
    $var=$var + 1
    WEnd
    Vediamo il suo significato:
    Dichiariamo la variabile $var e gli assegniamo il valore 0 , dopo abbiamo la nuova funzione: While cioè specifichiamo l’inizio del ciclo dopo While abbiamo messo le condizioni necessarie per far terminare il ciclo $var < 10 cioè diciamo al ciclo che deve finire soltanto quando la variabile $var sarà superiore a 9 in poche parole ;finché la variabile è minore di 10 non fermare il ciclo.
    Sotto While ho fatto spuntare un MsgBox che ci informava quale era il valore assegnato a $var.
    Sotto il MsgBox abbiamo fatto in modo che ad ogni ciclo il valore assegnato a 4var aumenti di 1.
    Alla fine vediamo Wend cioè indica che lì finisce il ciclo e che le istruzioni che vanno dopo vanno eseguite solo se il ciclo finisce,quindi praticamente ogni volta che il ciclo si ripete while controlla se la variabile $var sia minore di 10 e ogni volta viene aumentata di 1 grazie alla istruzione $var=$var+1 che indica: assegna alla variabile $var il valore della variabile $var + 1.(incremento).
    Attenzione il ciclo while è uno strumento molto potente state molto attenti a quello che fate perché se non viene effettuato il raggiungimento della condizione avrete praticamente un ciclo INFINITO .
    Vi faccio un esempio di un ciclo infinito:
    While 1
    MsgBox(0,"Infinity","Questo messaggio sarà 4 ever se non terminerai lo script")
    WEnd
    MsgBox(48,"WOW","Il ciclo è finito")

    Vediamolo in dettaglio:
    While 1 : sta a significare esegui il ciclo fin quando 1 = 1 quindi una condizione sempre vera.
    Wend: serve per far capire al compilatore che all’interno dei comandi while e wend si è dentro un ciclo
    Dopo il Wend notiamo il MsgBox ma non lo vedrete mai il messaggio visto che il pc sarà intento a eseguire il ciclo While all’infinito  .
    N.B. Quando si verifica un errore in uno script e lo volete terminare fate in questo modo:
    potete notare in basso un icona a forma di A vi basta cliccare su quella icona e poi cliccare su exit per terminare lo script, per levare l’icona (cosa consigliata solo dopo aver appurato che lo script funzioni correttamente) vi basta mettere all’inizio dello script la seguente funzione:
    #NoTrayIcon
    In questo non si potrà terminare a meno ché non si termini il processo attivo, qui alcune immagini:


















    Ricordo ancora una volta di esercitarsi molto. 





    Il Ciclo Do…Until


    Il Ciclo Do è simile al ciclo While a differenza che farà sempre e comunque almeno una volta il ciclo.
    Vediamo come è composto il ciclo:

    Do


    Until <condizione>

    Vediamo una dimostrazione sulla differenza tra While

    $a=True
    While $a = False
    MsgBox(0,"Controllo","Eseguito il ciclo")
    WEnd

    e Do

    $a=True
    Do
    MsgBox(0,"Controllo","Eseguito il ciclo")
    Until $a= True

    Vediamo come funziona:
    assegniamo alla variabile $a il valore True cioè Vero.
    Do serve per inizializzare il ciclo e quindi dire che le istruzioni seguenti sono all’interno del ciclo.
    Un MsgBox come sempre
    E dopo Until $a = True
    Che sta a significare questo:
    Esegui il ciclo finché $a è vera nel while non esegue il ciclo mentre qui prima esegue il ciclo e dopo controlla la condizione.
    Anch’ esso se controllato male può portare a un ciclo infinito.





    Gli Operatori e Logici e Booleani

    Prima di continuare dobbiamo soffermarci sugli operatori logici e booleani,visto che ci serviranno molto nel prossimo capitolo.
    Questi operatori possiamo dire che sono molto importanti perché utilizzati praticamente sempre vediamo ora quali sono:

    < (Minore)

    > (Maggiore)

    <> (Diverso)

    = (Assegnamento)

    == (Comparazione)

    Or (Logico inclusivo)

    And (Logico)

    Not (Negazione Logica)

    Facciamo alcuni esempi:
    $a < $b : La variabile $a è minore di $b.
    $a > $b: La variabile $a è maggiore di $b.
    $a <> $b:La variabile $a è diversa da $b .
    $a=$b:La variabile $a assume il valore della variabile $b.
    $a==$b: La variabile $a è uguale alla variabile $b.
    $a < $b Or $a < $c: La variabile $a è minore della variabile $b O la variabile $a è minore della variabile $c.
    $a < $b And $b > $c:La variabile $a è minore della variabile $b E la variabile $b è minore della variabile $c.
    Not $var=True: La variabile $var NON è uguale a True.



    Le funzioni di condizione

    Principalmente le funzioni di condizioni sono 3:
    If..ElseIf..Else..Endif

    Select..Case..EndSelect

    Switch..Case..EndCase



    If..ElseIf..Else..Endif

    Bene , ora affrontiamo un argomento molto importante per creare un programma decente o almeno qualcosa che si possa definire tale.
    Vediamo come è formato e come deve essere utilizzato:

    If <espressione> Then
    . . .
    ElseIf <espressione> Then
    . . .
    Else
    . . .
    Endif

    Vi faccio un esempio pratico su come viene utilizzato:

    $var=5

    If $var < 0 Then
    MsgBox(0,"Negativo","Il contenuto di $var è un numero negativo")
    ElseIf $var > 0 And $var < 10 Then
    MsgBox(0,"Da 0 a 10","Il contenuto di $var è compreso da 0 a 10")
    Else
    MsgBox(0,"Fuori","Il contenuto di $var è maggiore di 10")
    EndIf

    Vediamo in dettaglio quello che avviene:
    Traduciamo in italiano il seguente script:

    SE $var è minore di 0 ALLORA fai spuntare il messaggio visuale.
    ALTRIMENTI SE $var è maggiore di 0 e $var minore di 10 ALLORA fai spuntare il messaggio visuale.
    ALTRIMENTI fai spuntare il messaggio visuale
    FINE SE

    Come possiamo vedere è molto semplice da capire,vediamo le differenze tra ElseIf e Else;
    ElseIf dà un'altra possibilità di decidere quello che deve succedere per far partire il messaggio,mentre Else esclude tutte le possibilità cioè se non si verifica quello che le due funzioni richiedono viene fatto spuntare il messaggio contenuto nell’ Else, alla fine si deve mettere un Endif per far dire al compilatore che la condizione è finita.
    Giocherellate un po’ con la variabile $var cambiando il valore mettendo come valore -1 o 20 vedrete che il messaggio cambia.



    Facciamo altri esempi introducendo altre funzioni del linguaggio:

    $domanda=InputBox("Domanda","Con quale lettera inizia la parola Hacker?")
    If StringLen($domanda) > 1 Then
    MsgBox(0,"Attenzione","Io volevo solo una lettera !")
    ElseIf $domanda = "h" Or $domanda = "H" Then
    MsgBox(0,"Esatto","Esatto !")
    Else
    MsgBox(0,"O.o'","O_O Forse non hai capito la domanda ? O_O")
    EndIf

    Bene ho accelerato di poco il passo, ma credo che ormai siete più che preparati, vediamo in dettaglio questo curioso script:
    $domanda=InputBox("Domanda","Con quale lettera inizia la parola Hacker?") : La funzione InputBox fa comparire una finestrella dove è possibile immettere un dato in input che viene memorizzato nella variabile $domanda.
    If StringLen($domanda) > 1 Then: StringLen ritorna il numero di caratteri che sono contenuti in una determinata variabile o testo che sia, quindi viene tradotto così: Se il numero di caratteri contenuti nella variabile $domanda sono maggiori di 1 allora…
    Questo serve per controllare che non si inseriscano + di 1 carattere (Nella funzione InputBox esiste un parametro che permette la stessa identica cosa vi faccio un esempio: InputBox(“Prova”,”Prova, puoi inserire solo un carattere”,””,” M1”) )
    ElseIf $domanda = "h" Or $domanda = "H" Then : Tradotto in italiano: Altrimenti Se $domanda è uguale a h o a H allora…
    Come potete vedere abbiamo utilizzato anche l’operatore logico OR che permette una doppia scelta senza creare un altro ElseIf.
    Else: se noi digitiamo qualcosa di non previsto viene subito mandato all’else…
    Endif: Dice al compilatore che viene chiusa la condizione.
    Vediamo altri esempi:

    If IsAdmin() Then
    MsgBox(0,"Ottimo","Sei amministratore di sistema ! ! !")
    Else
    MsgBox(0,"OPS","Non sei amministratore di sistema ! ! !")
    EndIf

    Qui notiamo una nuova funzione: IsAdmin() , questa funzione permette di verificare se l’utente attualmente connesso è un Admin, se lo è spunta il primo messaggio , Altrimenti l’altro.
    Possiamo usare anche Not come in questo esempio:

    If Not FileExists("ciao.txt") Then
    MsgBox(0,"NON","Il file non esiste")
    Else
    MsgBox(0,"SI","Il file esiste")
    EndIf

    La funzione FileExist controlla se un determinato file esiste quindi lo script viene tradotto così:
    Se il file ciao.txt NON esiste MsgBox (il primo) altrimenti l’altro.
    Molto semplice da capire . 

    Passiamo a un esempio un po’ + difficile:

    $lista = ProcessList()
    for $i = 1 to $lista[0][0]
    If $lista[$i][0] == "explorer.exe" Then
    MsgBox(0,"Find","Ho trovato il processo che cercavi")
    EndIf
    Next

    La funzione ProcessList() ritorna tramite un array bi-dimensionale alcune info, cioè il numero del processo e il nome:
    quindi noi creiamo un ciclo che parte da 1 a $lista[0][0] (che ritorna il numero di processi trovati),dopo facciamo un controllo se viene trovato nella lista dei processi il nome explorer.exe, se lo trova compare il messaggio., praticamente funziona così $lista[1][0] ritorna il nome del primo processo mentre $list[1][1] ritorna il PID del processo ma questo a noi non interessa e quindi facciamo incrementare solo il primo indice quindi sarà sempre $lista[1][0] … $lista[2][0]…etc.
    Io ho voluto complicarmi le cose perché mi bastava scrivere questo per controllare se trovava il nome del processo:
    $lista = ProcessList("explorer.exe")
    for $i = 1 to $lista[0][0]
    msgbox(0, $list[$i][0], “trovato”)
    next
    L’ho fatto per utilizzare la funzione If con il ciclo for :P
    Per controllare se un determinato processo è attivo basta usare la funzione ProcessExists in questo modo:
    If ProcessExists("explorer.exe") Then
    MsgBox(0,"Ok","Trovato")
    Else
    MsgBox(0,"Ko","Non trovato")
    EndIf
    RICORDO CHE QUESTA GUIDA DEVE ESSERE INTRAPRESA CON IL FILE HELP UFFICIALE(quindi in inglese) DEL LINGUAGGIO AUTOIT CHE POTETE TROVARE IN START->AUTOIT3->HELP FILE IN MODO DA FORNIRVI TUTTE LE FUNZIONI IN MANIERA COMPLETA.
    Select..Case..EndSelect

    Le funzioni Select…Case..EndSelect sono molto utili e permettono di effettuare condizioni senza mettere tantissimi if o elseif, vediamo come è composta:

    Select
    Case <espressione>

    Case <espressione>

    ………………………..
    Case Else

    EndSelect

    Ecco qui un piccolo esempio su come utilizzarla:

    $var1=0
    $var2=””
    Select
    Case $var1 = 1
    MsgBox(0,”Uno”,”La prima espressione case è vera”)
    Case $var2 = “ciao”
    MsgBox(0,”Ciao”,”La seconda espressione Case è vera”)
    Case Else
    MsgBox(0,”Nada”,”Nessun caso precedente è vero”)
    EndSelect


    Vediamo lo script da vicino e tradotto in pseudo linguaggio:
    Le prime 2 righe già le conosciamo, dichiariamo le variabili $var1 e $var2 e gli assegniamo rispettivamente 0 e “ ”
    Inizializziamo la condizione Select (cioè seleziona)
    Dopo abbiamo scritto Case $var1 = 1 (Tradotto in pseudo linguaggio è: Nel caso $var1 è uguale a 1 esegui il MsgBox)
    Nella seconda abbiamo un altro case: Case $var2 = “ciao” (Tradotto in pseudo linguaggio è:Nel caso $var2 è uguale a ciao esegui il MsgBox
    Noi possiamo inserire tutti i Case che vogliamo…
    Nella penultima riga vediamo Case Else (Tradotto: nel caso non sia successa nessuna delle condizioni precedenti esegui il MsgBox [Come se fosse un Else in If])
    Alla fine diciamo al compilatore che finiamo li la condizione.



    Switch…Case…EndSwitch

    La funzione Switch…Case…EndSwitch è molto simile alla funzione precedentemente affrontata ma questo non significa che è uguale, vediamo il perché e come funziona:

    Switch <espressione>
    Case <valore> [To <valore>] [,<valore> [To <valore>] . . .]
    . . . . .
    Case <valore> [To <valore>] [,<valore> [To <valore>] . . .]
    . . . . .
    Case Else
    . . . . .
    EndSwitch

    Come possiamo vedere si prende in considerazione un espressione, e si posso inserire vari casi che però si possono riferire soltanto a quella espressione e non a le altre, facciamo un po’ di esempi:

    $var1=15

    Switch $var1
    Case 2
    MsgBox(0,"2","$var1 è uguale a 2")
    Case 15
    MsgBox(0,"15","$var1 è uguale a 15")
    Case Else
    MsgBox(0,"Nulla","Non è stato possibile individurare il caso esatto")
    EndSwitch

    Come possiamo vedere questo script è molto simile alla funzione Select…Case…EndSelect tranne per una cosa; non si specifica più nei vari case a quale variabile si riferisce perché è stata specificata nello Switch iniziale;ora vediamo un altro importante cambiamento rispetto alla precedente funzione:
    $ora=16

    Switch $ora
    Case 5 To 12
    MsgBox(0,"Mattino","Buon Giorno")
    Case 13 To 18
    MsgBox(0,"Pomeriggio","Buon Pomeriggio")
    Case 19 To 23
    MsgBox(0,"Sera","Buona Sera")
    Case Else
    MsgBox(0,"Notte","Buona Notte")
    EndSwitch
    Prendiamo in esame questo script:
    All’inizio assegniamo alla variabile $ora il valore 16
    Apriamo lo Switch prendendo in esame la variabile $ora
    Qui abbiamo qualcosa di nuovo , in pseudo linguaggio significa : Nel caso il contenuto della variabile $ora è contenuto da 5 a 12 avvia il MsgBox con Buon Giorno.
    Vediamo l’altro case: Nel caso il contenuto della variabile $ora è contenuto da 13 a 18 esegui il MsgBox con Buon pomeriggio.
    Vediamo l’altro case: Nel caso il contenuto della variabile $ora è contenuto da 19 fino a 23 esegui il MsgBox con Buona Sera.
    Vediamo il Case Else: Se non è stato trovato il caso adatto esegui il MsgBox con Buona Notte.
    Chiudiamo lo Switch.
    Come possiamo vedere queste funzioni sono molto utili;però bisogna saper prevedere i vari imprevisti;
    per esempio se nella variabile $ora io avessi messo “a” anzi di 16 o 2223 mi sarebbe comparso il MsgBox con Buona Notte, causando un Bug all’interno dello script, visto che quell’eccezione è gestita male,per risolvere basta aggiungere un altro Case che verificava se il contenuto di $ora andasse da 0 a 5 ed eseguire il MsgBox Buona Notte e dopo mettere il case Else facendo spuntare un MsgBox di errore.
    Questo è un piccolo ragionamento che bisogna fare per rendere i programmi sicuri e approva di utenti davvero poco attenti o precipitosi.

    ContinueCase

    ContinueCase permette di saltare un case in un blocco switch o select, vediamo come:

    $ora=5

    Switch $ora
    Case 5 To 12
    MsgBox(0,"Mattino","Buon Giorno")
    ContinueCase
    Case 13 To 18
    MsgBox(0,"Pomeriggio","Buon Pomeriggio")
    Case 19 To 23
    MsgBox(0,"Sera","Buona Sera")
    Case Else
    MsgBox(0,"Notte","Buona Notte")
    EndSwitch

    Come potete notare questo script avviandolo fa spuntare sia il MsgBox di Buon Giorno che di Buon pomeriggio, questo perché dopo aver identificato il caso (Mattino) viene trovata l’istruzione ContinueCase che fa saltare il case e viene eseguito il Case seguente, quindi pomeriggio.
    Per tutto il resto è completamente uguale alla funzione precedente. 







    Le Macro

    Bene,siamo arrivati a un argomento molto importante: LE MACRO.
    Le Macro possiamo dire che sono uno degli strumenti più potenti di autoIt, permettono di semplificare la vita del programmatore in modo assurdo e incredibile,vediamo come.
    Le macro sono sempre precedute dal simbolo @ e possono essere inserite in qualsiasi contesto perché possono essere delle stringhe.
    Le Macro sono come delle variabili prefissate dal sistema, ogni volta che richiamiamo una macro il sistema legge dalla fonte, la memorizza nella macro e dopo possiamo utilizzarla come meglio crediamo; vediamo come utilizzarle,a cosa servono,quali sono:

    Quali Sono ?

    Ecco una lista completa:

    @AppDataCommonDir = restituisce la directory dati applicazioni comune
    @AppDataDir = restituisce la directory dati applicazioni dell’utente corrente
    @AutoItExe = restituisce la path dove risiede il file compilato in esecuzione (se non compilato riporta l’interprete altrimenti lo stesso script compilato)
    @AutoItPID = restituisce il PID del processo dello script
    @AutoItUnicode = ritorna 1 se si avvia usando la versione unicode di autoIt o 0 se si usa quella ANSI
    @AutoItVersion = ritorna la versione attuale di autoIt
    @AutoItX64 = ritorna 1 se lo script viene eseguito su un sistema x64
    @CommonFilesDir = ritorna la directory dei file comuni
    @Compiled = ritorna 1 se lo script da cui viene eseguito è compilato, altrimenti 0
    @ComputerName = ritorna il nome del computer
    @ComSpec =ritorna la path dove risiede il file cmd (prompt dei comandi)
    @CR = viene usato come separatore
    @CRLF = permette di ritornare a capo
    @DesktopCommonDir = ritorna la directory del desktop comune
    @DesktopDir = ritorna la directory del desktop dell’utente corrente
    @DesktopHeight = ritorna la risoluzione verticale del monitor in pixel
    @DesktopWidth = ritorna la risoluzione orizzontale del monitor in pixel
    @DesktopRefresh =ritorna il refresh dello schermo in hertz
    @DocumentsCommonDir = ritorna la directory dei documenti comuni
    @error = ritorna lo status dell’errore
    @exitCode = ritorna il codice di uscita
    @exitMethod = ritorna il metodo di uscita
    @extended = macro usata per ampliare il funzionamento di alcune funzioni (come StringReplace)
    @FavoritesCommonDir = ritorna la directory dei favoriti comuni
    @FavoritesDir = ritorna la directory dei favoriti dell’utente corrente
    @HomeDrive = ritorna la lettera dell’ hard disk corrente (esempio: C:)
    @HomePath = ritorna la directory dell’utente corrente (Deve essere usato in congiunzione con @HomeDrive )
    @HOUR = ritorna l’ora corrente (da 0 a 23)
    @HotKeyPressed = identifica l’ultima tasto premuto
    @InetGetActive = ritorna 1 se la funzione InetGet è attiva altrimenti 0
    @InetGetBytesRead = durante la funzione InetGet ritorna il valore in bytes dei dati scaricati, ritorna -1 se c’è un errore
    @IPAddress1 = ritorna l’indirizzo ip del primo adattatore di rete. (se non riesce a trovare l’ip ritorna 127.0.0.1 [cioè localhost])
    @IPAddress2 = ritorna l’indirizzo ip del secondo adattatore di rete (se non riesce a trovare l’ip ritorna 0.0.0.0 )
    @IPAddress3 = idem con la funzione precedente
    @IPAddress4 = idem con la funzione precedente
    @KBLayout = ritorna il codice restituito dalla tastiera
    @LF = serve come un tasto tab
    @LogonDomain = ritorna il nome del dominio
    @MDAY = ritorna il numero del giorno. ( da 01 a 31 )
    @MIN = ritorna i minuti (da 00 a 59 )
    @MON = ritorna il numero del mese (da 01 a 12 )
    @MyDocumentsDir = ritorna la directory dei documenti dell’utente corrente
    @NumParams = ritorna il numero di parametri usati in una funzione
    @OSBuild = ritorna il numero di costruzione del sistema operativo
    @OSLang = ritorna il codice della lingua dell’ O.S (Operative System)
    @OSServicePack = ritorna il nome del Service Pack
    @OSTYPE = ritorna il tipo di sistema operativo
    @OSVersion = ritorna la versione dell’ O.S
    @ProcessorArch = ritorna l’architettura del processore
    @ProgramFilesDir = ritorna la directory della cartella Programmi
    @ProgramsCommonDir = ritorna la directory della cartella programmi comuni
    @ProgramsDir = ritorna la directory della cartella programmi dell’utente corrente
    @ScriptDir = ritorna la path dove è situato lo script (attenzione non ha / finale)
    @ScriptName = ritorna il nome dello script
    @ScriptFullPath = ritorna la directory completa di dove è situato lo script (è un unzione di 2 macro : @ScriptDir & "" & @ScriptName)
    @ScriptLineNumber = ritorna il numero di linee dello script (principalmente usato per il debug)
    @SEC = ritorna il numero di secondi (da 00 a 59)
    @StartMenuCommonDir = ritorna la directory comune del menu start
    @StartMenuDir = ritorna la directory dell’utente corrente del menu start
    @StartupCommonDir = ritorna la directory comune dell’avvio automatico
    @StartupDir = ritorna la directory corrente dell’avvio automatico dell’utente
    @SW_DISABLE = permette di disabilitare una finestra (usato come opzione in alcune funzioni)
    @SW_ENABLE =permette di abilitare una finestra (usato come opzione in alcune funzioni)
    @SW_HIDE = permette di nascondere una finestra (usato come opzione in alcune funzioni)
    @SW_LOCK = permette di bloccare una finestra (usato come opzione in alcune funzioni)
    @SW_MAXIMIZE = permette di massimizzare una finestra (usato come opzione in alcune funzioni)
    @SW_MINIMIZE = permette di minimizzare una finestra (usato come opzione in alcune funzioni)
    @SW_RESTORE = permette di far ritornare normale una finestra (usato come opzione in alcune funzioni)
    @SW_SHOW = permette di visualizzare una finestra (usato come opzione in alcune funzioni)
    @SW_UNLOCK = permette di sbloccare una finestra (usato come opzione in alcune funzioni)
    @SystemDir = ritorna la path della directory di sistema
    @TAB = permette di simulare il tasto tab
    @TempDir = ritorna la path della directory dei file temporanei
    @TrayIconFlashing = ritorna 1 se l’icona nella tray lampeggia altrimenti ritorna 0
    @TrayIconVisible = ritorna 1 se l’icona nella tray è visibile altrimenti ritorna 0
    @UserProfileDir = 0ritorna la path della directory dell’utente corrente
    @UserName = ritorna l’username al momento connesso
    @WDAY = ritorna il numero del giorno della settimana (da 1 a 7)
    @WindowsDir = ritorna la directory WINDOWS
    @WorkingDir = ritorna la directory di lavoro
    @YDAY = ritorna il numero del giorno dell’anno (da 1 a 366)
    @YEAR = ritorna l’anno corrente (esempio: 2008)

    A cosa servono ?

    Le Macro sono una caratteristica principale del linguaggio, questo perché facilitano il lavoro, permettendo di fare cose che in altri linguaggio sarebbe più difficoltoso da fare, facciamo un esempio:

    Io sto creando uno script che dato un certo orario ritorna la directory dove risiede lo script,l’ip e l’username; le macro vengono in nostro soccorso,praticamente le macro vanno a leggere alcune chiavi di registro dove prelevano i vari dati di sistema, per esempio io non so quale è la directory documenti dell’amico francesco…. Bene con la macro @MyDocumentsDir possiamo risolvere il problema.
    Vediamo lo script d’esempio:

    While 1
    Sleep(500)
    If @HOUR = 16 And @MIN = 00 Then
    MsgBox(64,"ScriptFullPath",@ScriptFullPath)
    MsgBox(64,"Ip",@IPAddress1)
    MsgBox(64,"Username",@Username)
    Exit
    EndIf
    WEnd

    Vediamo in dettaglio questo script:
    Mettiamo un ciclo infinito in modo che lo script non termini
    Mettiamo uno Sleep(serve per mettere in pausa lo script),cioè fermiamo lo script per 500 millesimi di secondo, in modo da non sovraccaricare la CPU altrimenti il ciclo si ripeterà ogni millesimo di secondo facendo sprecare parecchia memoria.
    Vediamo l’if:
    tradotto in pseudo linguaggio-> Se l’ORA è uguale a 16 E i MINUTI sono uguali a 00 ALLORA
    Esegui il MsgBox che ritorna la path completa di dove si trova lo script (quindi directory/nome script)
    Dopo esegui il MsgBox che ritorna l’indirizzo IP
    Dopo esegui il MsgBox che ritorna l’username corrente
    Dopo ESCI
    Chiudo if
    Chiudo while
    Se volete verificare voi stessi cosa restituisce ogni singola macro vi basta metterla in un MsgBox.
    In questa guida faremo un uso quasi dispersivo delle macro quindi esercitatevi come matti, usandole nelle funzioni già viste o provandole con quelle nuove.


    Come utilizzarle ?

    Abbiamo spiegato tutto delle macro tranne come utilizzarle al meglio, le macro devono essere trattate come vere e proprie variabili,vediamo come usarle introducendo qualche nuova funzione:

    #include<file.au3>

    _FileCreate(@DesktopDir&"primo file.txt")

    Abbiamo visto qualcosa di nuovo:
    #include < file.au3> :
    Bene questa nuova “funzione” meglio saltarla, la prendiamo dopo:
    _FileCreate(@DesktopDir&”primo file.txt”) :
    Questa funzione permette di creare un file di 0 bytes (quindi vuoto)
    Vediamola in dettaglio:
    l’unico parametro che noi dovevamo inserire era la directory con il nome del file e l’estensione, ma sarebbe stato scomodo inserire “C:Documents and SettingsutenteDesktopprimo file.txt , poi se lo script non era destinato a noi non avremmo mai potuto prendere utente visto che cambia da pc a pc, quindi abbiamo utilizzato la macro @DesktopDir che ritorna questo: C:Documents and SettingsutenteDesktop ,come possiamo vedere manca lo finale quindi abbiamo rimedito così: abbiamo richiamato la macro & “primo file.txt” in questo modo concateniamo la stringa restituita dalla macro con primo file.txt”, questo và fatto con tutte le macro che restituiscono path.
    Ritorniamo alla funzione precedentemente vista: #include<file.au3>
    Praticamente la funzione _FileCreate non è presente nell’interprete autoIt, questa funzione è dichiarata (e quindi strutturata) nel file File.au3 presente in C:ProgrammiAutoIt3Incude (chiamata libreria) se lo aprite potete vedere tante funzioni tra cui la funzione _FileCreate; se non avessimo trovato la funzione _FileCreate l’interprete non avrebbe saputo cosa fare, guardate sempre le caratteristiche delle funzioni perché c’è scritto anche se bisogna includere una determinata libreria.
     
    .
  2. raffy3000
        Like  
     
    .

    User deleted


    bella guida
     
    .
1 replies since 12/2/2010, 11:01   1437 views
  Share  
.