[Autoit]

« Older   Newer »
 
  Share  
.
  1. GDM1
        Like  
     
    .

    User deleted


    Ho notato che nel forum ci sono pochi programmi scritti in liguaggi che non siano il batch (che tra l'altro non è un linguaggio di programmazione!!)!!! Per questo ho deciso di postare la guida (di =Soul=) di un liguaggio di scripting: Autoit!!
    E' un liguaggio abbastanza semplice che io personalmente consiglio a chi è alle prime armi e ha voglia di imparare qualcosa!!! Inoltre è possibile creare facilmente le interfaccie grafiche (GUI) che magari con il C è un po piu complesso!!!

    Detto questo consiglio agli utenti più interessati all'hacking di studiarsi il C una volta che si sono raggiunti buoni livelli con l'Autoit!!! Voglio ricordare inoltre che con il batch non si possono fare dei virus!! Personalmente penso che il batch serva veramente a poco [non ho detto che non serve :srotol: ]

    Buona lettura :pdance: :

    Troppo lunga...messa sotto spoiler :)

    SPOILER (click to view)
    Ecco la guida di AutoIT
    Per cominciare a programmare è necessario avere gli strumenti giusti:

    ----------------------Installazione----
    Scaricate da QUI
    AutoIt Full Installation
    Questo pacchetto installerà nel vostro sistema:
    -I file essenziali del programma AutoIt3
    -L'utility Aut2Exe per convertire i vostri script AutoIt in Exe compilati
    -L'addon AutoItX per gestire i controlli sulle COM e sulle DLL
    -Una versione ridotta dell'editor SciTE con il riconoscimento automatico della sintassi di AutoIt

    Installate l'eseguibile (durante l'installazione, scegliete di EDITARE i file .au3 con il doppio click)
    Ora andate su start / Tutti i programmi / AutoIt v3 / SciTE Script Editor
    Ok, questo è SciTE, salutate SciTE bambini [ciaoooo sciiite]
    Cliccate su File / New, si aprirà un foglio virtuale. Dovete scrivere il vostro script qui.
    Il file va salvato con estensione .AU3
    Per eseguire il codice scritto dovete salvare in un file.au3 e poi andare in Tools / Go (in alternativa premete soltanto F5)


    ----------------------Let's-Code-------
    ----Hello-World--

    Cominciamo con un Hello World! Si tratta semplicemente di creare un programma che si limiti a stampare a schermo la scritta Hello World

    Digitate la seguente riga: (non copiatela e incollatela)


    CODICE
    Msgbox (0, "Io sono il titolo", "Hello World!")





    Avrete tutti notato (tranne quei somari che hanno fatto copia-incolla Smile ) che appena aperta la parentesi SciTE vi ha mostrato una semplice descrizione della funzione e i possibili parametri che vanno passati
    I parametri, separati da virgole dentro alle parentesi tonde, sono tutti obbligatori tranne quelli compresi tra parentesi quadre; quelli sono opzionali.
    Ora prendiamo la riga che abbiamo scritto


    CODICE
    Msgbox (0, "Io sono il titolo", "Hello World!")



    Abbiamo passato come primo parametro, flag 0; questo indica che non ci saranno icone o tasti speciali nella nostra msgbox
    Come secondo e terzo parametro, title e text abbiamo passato una stringa alfanumerica. Le stringhe sono comprese tra gli apici, questi = > " "
    Il quarto parametro opzionale indica il timeout ovvero il tempo che deve passare prima che la finestra si chiuda. Noi vogliamo che il nostro Hello World resti attivo fino a quando l'utente non prema [ OK ] quindi dobbiamo lasciare vuoto questo campo.

    ----Variabili-e-Macro--
    Le variabili in AutoIt sono facilmente riconoscibili: una variabile comincia sempre con il simbolo del dollaro, questo = > $
    Le variabili possono essere viste come delle scatole contenenti un valore.
    Le variabili possono modificare il valore che contengono durante l'esecuzione del programma.
    Per assegnare un valore a una variabile è sufficiente scrivere:


    CODICE
    $variabile = 6
    $variabile = "stringa"


    Nel primo caso la $variabile assumerà il valore 6, nel secondo caso assumerà valore "stringa"
    Provate a scrivere


    CODICE
    $variabile = 6
    Msgbox (0, "", $variabile)



    e cambiate il valore di $variabile. Sperimentate! Very Happy

    Ogni funzione ritorna sempre un valore.
    Come esempio prenderemo StringUpper che ritorna la stringa inserita con i caratteri in maiuscolo.



    CODICE
    $string_upped = StringUpper ( "m2o: musica allo stato puro" )
    Msgbox (0, "Fraev sta ascoltando:", $string_upped)



    Stiamo assegnando il valore ritornato da StringUpper alla variabile $string_upped.

    Volendo possiamo perfino saltare un passaggio è scrivere direttamente


    CODICE
    Msgbox (0, "Fraev sta ascoltando:", StringUpper ( "m2o: musica allo stato puro" ))



    Eh già, anche in AutoIt è possibile concatenare le funzioni

    Le macro invece cominciano sempre con la chiocciola (questa = > @) e, al contrario delle variabili, il loro valore non può essere modificato dallo scripter.
    Le macro possono rappresentare valori costanti o valori che possono variare con il tempo. Un esempio di Macro è dato da @ComputerName.
    Provate a scrivere



    CODICE
    Msgbox (0, "Il nome del computer", @ComputerName)


    Una variabile può assumere anche il valore di una macro
    @YDAY indica il giorno dell'anno da 1 a 365/366


    CODICE
    $variabile = @YDAY
    Msgbox (0, "Giorno dell'anno", $variabile)



    Gli argomenti trattati sono davvero basilari... ma bisogna cominciare dalle cose semplici, no?

    ----Array--
    Fino ad adesso abbiamo visto le variabili come delle scatole contenenti dei valori.
    Gli array sono un insieme di scatole
    Gli array in pratica sono dei gruppi di variabili ordinati.
    Per popolare gli array (-> attribuire valori alle "scatole" degli array) si può scrivere:


    CODICE
    dim $array[5] = [8, 4, 5, 9, 1]


    Per lavorare con gli array ci sono le funzioni e _Array*

    ----Operazioni-con-le-stringhe--
    In AutoIt le stringhe possono essere unite tra loro usando il simbolo della E commerciale, questo = > &
    Quindi se vorrò unire una variabile a una linea di testo sarà sufficiente scrivere


    CODICE
    $var= "io so"
    $var2 = "no"
    $var3 = "il"
    $var4 = "na"
    Msgbox (0, "Questo esempio fa schifo", $var & $var2 & " " & $var3 & " " & $var2 & $var2 & " " & $var4 & $var2)


    Provate a indovinare cosa c'è scritto... senza eseguire il codice

    Per andare a capo esiste la macro @CRLF
    Anche le macro possono essere unite a una variabile o una stringa mediante &


    CODICE
    Msgbox (0, "Io non ho paura", "Io non ho paura di niente" & @CRLF & @CRLF & "..." & @CRLF & @CRLF & "tranne di AutoIt")



    lol, scusate, non so come faccio a inventarmi degli esempi del genere... mi sembra di essere persino sobrio

    : D

    Sulle stringhe è inoltre possibile utilizzare delle funzioni per modificarle.
    Le funzioni per modificare le stringhe cominciano con String* e con _String*
    Le funzioni sono di una semplicità unica. Inoltre gli esempi correlati spiegano molto bene come scrivere il codice.

    Leggete bene l'help ufficiale.

    Mi soffermerò un attimo solo su StringSplit per spiegare come usare le funzioni.


    CODICE
    $array = StringSplit ("Marta è bellissima", " ")


    Questa funzione prende una stringa e. dato un certo delimitatore. ritorna un array dove $array[0] è uguale al numero

    di valori presenti nell'array (senza contare zero) e $array[1] e gli altri sono uguali alle stringhe delimitate dal

    delimitatore
    Nel nostro caso il delimitatore è " " (lo spazio) quindi
    $array[0]=3 $array[1]="Marta", $array[2]="è" e $array[3]="bellissima"

    Questo è anche un buon metodo per popolare gli array


    ----Operazioni-con-i-files--
    Come possiamo effettuare le più comuni operazioni sui files in AutoIt?
    Le funzioni riguardanti i file iniziano con File* e con _File*
    1. Aprire un file:
    Per aprire un file possiamo usare il comando


    CODICE
    $handle_del_file = FileOpen ("nomefile.txt", $mode)



    Da una funzione FileOpen ritorna sempre l'handle di un file che potrà essere usato in altre funzioni (FileRead per esempio.)
    Il $mode specifica come stiamo aprendo quel file.
    Se $mode è maggiore di 0 il file è aperto in Read mode e l'handle potrà essere usato in una funzione FileRead
    Se $mode è uguale a 1 il file è aperto anche in Write Mode e l'handle potrà essere usato in una funzione FileWrite dove il testo verrà aggiunto alla fine del file
    Se $mode è uguale a 2 il file è aperto anche in Write Mode e l'handle potrà essere usato in una funzione FileWrite dove il testo sovrascriverà il testo esistente

    2. Scrivere in un file:
    Per scrivere all'interno di un File possiamo usare FileWrite o FileWriteLine.
    FileWriteLine è uguale a FileWrite ma aggiunge un @CRLF alla fine della stringa facendo andare a capo il puntatore
    FileWrite(Line) può essere usato così


    CODICE
    FileWrite ($handle_del_file, "Wow sto scrivendo dentro nomefile.txt")


    Oppure


    CODICE
    FileWrite ("nomefile.txt", "Wow sto scrivendo dentro nomefile.txt")

    L'unica differenza è che usando l'handle del file è possibile tenere aperto il file.

    3. Leggere un file:
    Per leggere un file basta scrivere


    CODICE
    $testo = FileRead ($handle_del_file, 100)
    ;oppure

    CODICE
    $testo = FileRead ("nomefile.txt", 100)



    il secondo parametro indica il numero di caratteri che devono essere letti
    Se il secondo parametro è omesso verranno letti tutti i caratteri.
    Se si vuole leggere una riga specifica è possibile usare


    CODICE
    $testo = FileReadLine ($handle_del_file, 5)


    ;oppure

    CODICE
    $testo = FileReadLine ("nomefile.txt", 5)



    Il secondo parametro indica la linea da leggere

    4. Chiudere un file:
    Semplicemente



    CODICE
    FileClose ($handle_del_file)



    5. Cancellare un file:
    Basta usare


    CODICE
    FileDelete ("nomefile.txt")




    Ovviamente esistono anche altre funzioni ma questo sono le principali e le più usate


    --------Strutture-Selettive----
    ----If...Then...Else...ElseIf...EndIf--



    CODICE
    Msgbox (0, "fraev has been here", "ehi, $x è uguale a 0, non so niente di $y")
    [Else]
    Msgbox (0, "fraev has been here", "ehi, $x è diverso a 0, $y è diverso da 0")
    Endif




    CODICE
    If $x=0 Then
    Msgbox (0, "fraev has been here", "ehi, $x è uguale a 0, non so niente di $y")
    [ElseIf $y=0] Then
    Msgbox (0, "fraev has been here", "ehi, $x è diverso da 0, $y è uguale a 0")
    [Else]
    Msgbox (0, "fraev has been here", "ehi, $x è diverso a 0, $y è diverso da 0")
    Endif


    If...Endif verifica una condizione posta tra If e Then;
    se la condizione risulta vera esegue il codice sotto a Then (fino alla successiva parola chiave)
    Se invece risulta falso viene eseguito il codice sotto a Else (fino alla successiva parola chiave)
    ElseIf è una particolare condizione; affinchè venga eseguito il codice sotto ElseIf la condizione tra If e Then deve essere falsa mentre la condizione tra ElseIf e Then deve essere vera
    EndIf va posto alla fine di ogni struttura If .. . Endif

    Fate delle prove, presto verrà tutto naturale.
    Chi non sopporta l'inglese può tradurre mentalmente le parole in italiano:
    If => Se
    Then => Allora
    Else => Altrimenti
    Laughing sembra una cavolata ma può aiutare molto.

    ----Select...Case...EndSelect--



    CODICE
    Select
    Case $x>1
    Msgbox (0, "", "$x è maggiore di 1")
    Case $x>10
    Msgbox (0, "", "$x è maggiore di 10")
    Case Else
    Msgbox (0, "", "$x è minore o uguale a 1")
    Endselect



    Select...EndSelect verifica le condizioni dopo ad ogni case ed esegue il codice sotto il primo case che risulta vero
    Nell'esempio non verrà mai fuori la finestra "$x è maggiore di 10" perchè prima si trova la condizione $x>1 (vera quando $x>10)

    ----Switch...Case...EndSwitch--



    CODICE
    Switch $x
    Case 1 to 3
    Msgbox (0, "", "$x è compreso tra 1 e 3")
    Case 4 to 5
    Msgbox (0, "", "$x è compreso tra 1 e 3")
    Case 6
    Msgbox (0, "", "$x è uguale a 6")
    EndSwitch




    Switch...EndSwitch si comporta in modo simile a Select...EndSelect
    In questa struttura però viene preso in esame una sola variabile che viene scritta dopo Switch
    Durante l'esecuzione viene verificato se il valore contenuto dentro alla variabile è compreso dentro un range di valori.
    Questo campo è definito dopo ogni case.
    Esempio:
    "1 to 3" comprende 1, 2 e 3
    Se $x è uguale a 1, 2 o 3 la condizione risulta vera e viene eseguito il codice sotto al primo Case

    Definire un range non è obbligatorio; è possibile infatti specificare un solo valore

    --------Strutture-Iterative----
    ----For...To...Step...Next--



    CODICE
    For $x = 5 to 35 step 5
    Msgbox (0, "AhiAhiAhi", "Non mi vengono in mente " & $x & " esempi più stupidi di questo... -.-")
    Next




    Esegue il codice compreso tra For e Next incrementando ad ogni ciclo la variabile dichiarata dopo 'For' ($x) del valore dichiarato dopo 'step' (5), fino a quando non assume il valore dichiarato dopo 'to' (35)
    Definire step non è obbligatorio; omettendo step il valore incrementa di 1

    ----While...WEnd--



    CODICE
    $counter = 0
    $string = ""
    While 1
    $counter += 1
    Switch $counter
    Case 10
    $string = @CRLF & "Cosa aspetti a terminarlo???"
    Case 20
    $string = @CRLF & "Cosa aspetti a terminarlo???" @CRLF & "Ma sei matto?"
    Case 30
    $string = @CRLF & "Cosa aspetti a terminarlo???" & @CRLF & "Ma sei matto?" & @CRLF & "Non hai niente di meglio da fare?"
    Case 50
    $string = @CRLF & "Cosa aspetti a terminarlo???" & @CRLF & "Ma sei matto?" & @CRLF & "Non hai niente di meglio da fare?" & @CRLF & "Povero demente..."
    EndSwitch
    Msgbox (0, "Ehi", "Questo codice andrà avanti all'infinito." & $string, 1)
    Wend


    Verifica la condizione posta dopo While e, se vera esegue il codice sottostante
    Con While è possibile generare facilmente un ciclo infinito. Basta scrivere "While 1" cioè una condizione sempre vera

    ----Do...Until--


    CODICE
    $BabboNataleExists = FALSE
    Do
    Switch Msgbox (32+3, "Domanda: ", "Babbo Natale esiste?", 10) ; potevo anche scrivere Msgbox (35, ...)
    Case 2
    Msgbox (0, "Mah", "Ah, non sai rispondere, eh?")
    Case 6
    Msgbox (0, "Mhm", "Teoria interessante...")
    $BabboNataleExists = TRUE
    Case 7
    Msgbox (0, "-_-", "Ok, pensala come vuoi")
    $BabboNataleExists = FALSE ; riga inutile (dopo c'è un exit) ma era tanto per ricordare che Babbo Natale non esiste ;D
    Exit
    Case Else
    Msgbox (0, "-_____-", "MUOVITI!!!", 30)
    EndSwitch
    Until $BabboNataleExists = TRUE


    Esegue il codice compreso tra Do e Until fino a che non si verifica la condizione posta dopo Until
    Ovviamente questa condizione può anche non verificarsi mai. Anche questo ciclo può quindi diventare un ciclo infinito...

    ----For...In...Next--


    CODICE
    Dim $array[5]
    $array[0] = "Fraev"
    $array[1] = "has"
    $array[2] = "been"
    $array[3] = "here..."
    $array[4] = "and he's here now..."
    Msgbox (48, "Attenzione", "Ora presenteremo il contenuto dell'array $array in 5 msgboxes." & @CRLF & "La visione e consigliata a un pubblico adulto non impressionabile." & @CRLF & "Buona visione." )
    For $x in $array
    Msgbox (0, "asd", $x)
    Next


    Esegue il codice compreso tra For e Next per ogni elemento di un array e attribuisce alla variabile compresa tra For e In tutti i valori dell'array

    [questa struttura viene anche utilizzata per lavorare sugli objects... ne parleremo più avanti; se vi interessa consultate il manuale di AutoIt]

    ----Creare-una-GUI--



    CODICE
    #include <guiconstants.au3>


    $Form = GUICreate("GUI", 216, 132)
    $Label = GUICtrlCreateLabel("Che bella GUI! (senza doppisensi)", 24, 24, 163, 17)
    $Button = GUICtrlCreateButton("Io penso di essere un bottone", 16, 72, 185, 33)

    GUISetState(@SW_SHOW)


    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit

    EndSwitch
    WEnd



    Creare un interfaccia grafica in AutoIt è molto semplice.
    Quando si crea un Form è bene includere GUIConstants.au3 così da poter usufruire di alcune variabili già preaparate dal team di AutoIt


    CODICE
    include <guiconstants.au3>
    #


    Ora passiamo alla creazione vera e propria del Form, la finestra del nostro programma. Per questo inseriamo la funzione GUICreate ("titolo")


    CODICE
    $Form = GUICreate("GUI", 216, 132)



    Il primo parametro indica il titolo della finestra;
    Il secondo e il terzo parametro indicano rispettivamente larghezza e altezza della nostra finestra;
    Il quarto e quinto parametro indicano invece la posizione della finestra nello schermo;
    il sesto e settimo parametro indicano gli stili della finestra, ovvero dei paramatri che consentono alla vostra finestra di assumere delle praticolari proprietà. Per un elenco completo di queste proprietà consultate l'help di AutoIt
    L'ottavo parametro consente di indicare una finestra "madre" per la finestra creata

    E' importante notare che solo il primo parametro è obbligatorio. Tutti gli altri parametri hanno un valore di default che verrà applicato nel caso manchi qualche parametro.

    Usando il comando GUICreate () si crea l'handle della finestra (l'oggetto sul quale verranno creati i controlli)


    Dopo aver creato la nostra finestrella, procediamo a popolarla di controlli (come bottoni, textbox, liste, etc)
    Per creare un controllo in una finestra è sufficiente usare il comando GUICtrlCreate*
    L'* va sostituito con il nome del controllo
    Per creare un bottone (button in inglese Razz) ad esempio:


    CODICE
    $Button = GUICtrlCreateButton("Io penso di essere un bottone", 16, 72, 185, 33)



    Il primo parametro indica il testo presente nel bottone
    Il secondo e il terzo parametro indicano la posizione
    Il quarto e il quinto parametro indicano la dimensione del controllo
    il sesto e settimo parametro indicano gli stili del controllo, ovvero dei paramatri che consentono ai vostri controlli di assumere alcune prorprietà particolari

    Questa è una sorta di traccia usata da molti controlli. Ovviamente alcuni controlli necessitano di più di un parametro ma le strutture dei GUICtrlCreate* sono molto simili tra loro

    IMPORTANTE: Da un controllo ritorna sempre l'handle del controllo che verrà usato in seguito per gestire l'interazione con i controlli.


    Dopo aver definito i controlli da usare nel Form settiamo lo stato della finestra con il comando



    CODICE
    GUISetState(@SW_SHOW)



    A GUISetstate possono essere passati due parametri:
    Il primo indica lo stato che la finestra deve assumere; il secondo indica l'handle della finestra in questione
    Se il secondo parametro non viene inserito viene utilizzata l'ultimo form creato


    Infine, la parte più divertente, definiamo cosa deve succedere quando l'utente preme un bottone o interagisce con un controllo.

    Per questo dobbiamo usare un ciclo infinito: il programma controllerà ogni secondo se qualche controllo è stato usato e reagirà di conseguenza.

    Bene, cominciamo a creare un ciclo infinito While...WEnd



    CODICE
    While 1


    Wend


    Poi utilizziamo la funzione GUIGetMsg() che rileva le interazioni con i controlli e diciamo al programma di salvare il suo valore dentro una variabile



    CODICE
    While 1
    $Msg = GUIGetMsg ()

    Wend


    Ora creaiamo una struttura di selezione Switch sul valore di $Msg (ovvero le interazioni con i controlli)

    $Msg assumerà il valore dell'handle del controllo che è stato usato, quindi organizziamo così il nostro Switch



    CODICE
    While 1
    $Msg = GUIGetMsg ()
    Switch $msg
    Case $button
    Msgbox (0, "Ehi!", "Vacci piano con quel mouse!" & @CRLF & "Noi poveri controlli ci pungiamo sempre")
    EndSwitch
    Wend




    Bene solo un ultima cosa:
    In AutoIt vengono attribuiti dei valori particolari ai tasti per ridimensionare, minimizzare e chiudere la finestra.
    Per poterli usare è necessario includere GUIConstants.au3
    Sono semplicemente delle variabili che possono essere usate come bottoni normali:

    $GUI_EVENT_CLOSE = il tasto per chiudere la finestra
    $GUI_EVENT_MINIMIZE = il tasto per minimizzare la finestra
    $GUI_EVENT_RESTORE = il click sulla barra di windows per ripristinare la finestra
    $GUI_EVENT_MAXIMIZE = il tasto per massimizzare la finestra



    CODICE
    While 1
    $Msg = GUIGetMsg ()
    Switch $msg
    Case $button
    Msgbox (0, "Ehi!", "Vacci piano con quel mouse!" & @CRLF & "Noi poveri controlli ci pungiamo sempre!!!")
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Wend



    ----Inviare-eventi-tastiera--
    In questa lezione vedremo come inviare pressioni di tasti a windows (proprio come se qualcuno stesse usando la nostra tastiera e il nostro mouse)

    Il primo comando che prenderemo in considerazione è Send("tasto") che invia delle combinazioni di tasti.


    CODICE
    Send ("!x")





    Se il secondo parametro viene settato a 1, i caratteri verranno inviati come sono scritti.
    Questa modalità viene usata per inserire del testo; si è infatti sicuri che il testo inserito sarà uguale a ciò che risulterà in output


    CODICE
    Send ("#adi8wa(/(=/", 1)



    darà come output #adi8wa(/(=/


    Se il secondo parametro di Send è settato a 0 o è lasciato di default tutti i caratteri verranno inviati come vengono scritti tranne:
    ! = ALT
    + = SHIFT
    ^ = CTRL
    # = WIN
    e alcune combinazioni necessarie per indicare alcuni tasti speciali


    CODICE
    Send("^!x")



    invierà CTRL+ALT+X

    Nell'help ufficiale è presente una lista completa con tutti i caratteri speciali

    E inoltre possibile dare particolari istruzioni a send:


    CODICE
    Send ("{A 4}")


    invierà A 4 volte.


    CODICE
    Send("{a down}")



    terrà schiacciato virtualmente il tasto a


    CODICE
    Send("{a up}")



    rilascerà il tasto a

    Con Numlock, CapsLock e SCrollLock toggle si possono usare anche le opzioni on/off/toggle per attivare e disattivare il lock
    Send("{NumLock on}")
    Send("{CapsLock off}")
    Send("{ScrollLock toggle}")

    ----Inviare-eventi-mouse--
    In AutoIt è possibile controllare il mouse attraverso alcune semplici funzioni:
    MouseClick: Invia un click del mouse.


    CODICE
    MouseClick("left", 10, 10, 2, 20)

    E' necessario impostare che tasto inviare ("Left","Right","Middle", etc) passando come primo parametro una stringa.
    Il secondo e il terzo parametro individuano le coordinate x/y alle quali verrà effettuato il click
    Il quarto parametro riguarda il numero di clicks da effetuare
    Il quinto parametro invece indica la velocità[0-100] alla quale il mouse dovrà spostarsi alle coordinate x/y; 0 è istantaneo, 100 è il più lento

    MouseCickDrag: Trascina il mouse da una coordinata a un altra


    CODICE
    MouseClickDrag("left", 10, 10, 20, 10, 0)


    Il primo parametro indica il tasto che verrà utilizzato nella funzione
    Il secondo e il terzo parametro individuano le coordinate x/y di partenza
    Il quarto e il quinto parametro individuano le coordinate x/y di arrivo
    Il sesto parametro indica ancora una volta la velocità[0-100]

    MouseMove: Sposta il mouse


    CODICE
    Mousemove(10, 10, 100)


    Il primo e il secondo parametro individuano le coordinate nelle quali le coordinate devono spostarsi
    Il terzo parametro indica la velocità[0-100]

    MouseGetPos: Ritorna informazioni sul mouse


    CODICE
    $array = MouseGetPos()
    Msgbox (0, "Il tuo mouse è qui: ", "X: " & $array[0] & @CRLF & "Y: " & $array[1])


    Se nessun parametro è specificato ritorna un array bidimensionale contenente in [0] la coordinata x e in [1] la coordinata y
    Se viene specificato come primo parametro 0, ritorna la coordinata x; se viene specificato 1, ritorna y
    MouseGetCursor: Ritorna il cursore del mouse
    Trovate la lista completa nell'help ufficiale

    MouseDown: Tiene premuto un tasto del mouse
    Si passa come primo parametro il tasto da tenere premuto

    MouseUp: Smette di premere un tasto del mouse
    Si passa come primo parametro il tasto da "liberare"

    MouseWheel: Invia lo scroll di una rotellina


    CODICE
    MouseWheel ( "down" ,23); questa è l'indicazione per l'inferno: down + [2/3=0.666666] :lol:


    Come primo parametro si passa la direzione, "up" o "down"
    COme secondo parametro il numero di volte che verra effettuato lo scroll (di default è 1)

    _MouseTrap: Confina il mouse in un area di schermo ] : D



    CODICE
    #include <misc>
    MsgBox (0, "Crea la tua prigione", "Indica i 2 angoli che delimiteranno la tua prigione")
    Sleep (1000)
    MsgBox (0, "Crea la tua prigione", "Indica l'angolo in alto a sinistra e premi [OK] usando [INVIO]")
    $upleft = MouseGetPos ()
    Sleep (1000)
    MsgBox (0, "Crea la tua prigione", "Indica l'angolo in basso a destra e premi [OK] usando [INVIO]")
    $downright = MouseGetPos ()
    Sleep (2000)
    MsgBox (0, "Crea la tua prigione", "Bene tra un attimo sarai in trappola!" & @CRLF & "Per uscire premi il tasto Home")
    _MouseTrap ($upleft[0], $upleft[1], $downright[0], $downright[1])
    While 1
    If _IsPressed (24) Then
    _MouseTrap ()
    Exit
    EndIf
    WEnd


    Questa funzione, semplicemente stupenda era in origine un UDF che è stato poi inserito nella versione ufficiale di AutoIt (lo si può capire dal _ che precede la funzione)
    Per funzionare richiede Misc.au3
    Bisogna solo passare le coordinate per l'angolo in alto a sinistra e per l'angolo in basso a destra


    ----Scrivere-leggere-e-cancellare-in-regedit--

    Per scrivere un valore nel registro possiamo usare la funzione RegWrite



    CODICE
    RegWrite("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun", "Shutdown" , "REG_SZ", @WindowsDir & "System32RUNDLL32.EXE user.exe,exitwindows" )


    Il primo parametro indica la posizione nella quale verrà creata la nostra chiave di registro
    Il secondo parametro indica il nome della chiave
    Il terzo parametro indica il tipo di chiave
    Il quarto parametro indica il valore da scrivere nella chiave
    Se verrà specificato solo il primo parametro verrà creata il percorso se non esistente

    Sono sicuro che tutti abbiamo capito cosa fa il codice dell'esempio Laughing Laughing
    Aggiunge all'avvio di Windows un collegamento che spegne il computer Twisted Evil


    Per leggere un valore usiamo la funzione RegRead


    CODICE
    RegRead(HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun", "Shutdown")


    Con il primo parametro specifichiamo il percorso della chiave da leggere
    Con il secondo invece indichiamo il nome della chiave

    L'esempio ritornerà @WindowsDir & "System32RUNDLL32.EXE user.exe,exitwindows"


    Per cancellare una chiave usiamo invece RegDelete


    CODICE
    RegDelete ("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun", "Shutdown")


    Come abbiamo già visto in RegRead con il primo parametro specifichiamo il percorso della chiave da cancellare
    Con il secondo invece indichiamo il nome della chiave da cancellare

    ----Operazioni sulle finestre--
    Nelle precedenti abbiamo imparato a creare finestre; ora daremo un occhiata alla loro gestione.

    Tutte le finestre di windows hanno un identificatore (handle) con i quali possiamo richiamare le finestre all'interno del programma

    Prima di tutto vediamo come recuperare informazioni sulle finestre che vediamo.
    Per raggiungere il nostro scopo usiamo il gruppo di funzioni WinGet*;
    Con queste funzioni possiamo, dato il titolo e (se vogliamo) una parte del testo della finestra recuperare l'handle della finestra, l'id del

    processo, il testo e il titolo esatto, la classe della finestra, etc...


    CODICE
    ProcessClose (WinGetProcess(InputBox ("Finestra da chiudere", "Inserisci il titolo della finestra da chiudere:")))

    per coloro a cui non piace il codice precedente: Wink


    CODICE
    $title = InputBox ("Finestra da chiudere", "Inserisci il titolo della finestra da chiudere:")
    $pid = WinGetProcess($title)
    ProcessClose ($pid)



    Piccola parentesi su WinGetTitle:
    Se si specifica un titolo vuoto in WinGetTitle la funzione ritornerà il titolo della finestra attiva

    WinGetTitle (""); finestra in primo piano


    Piccola parentesi su WinGetState:
    Per leggere lo stato di una finestra dobbiamo usare BitAND () in questo modo


    CODICE
    BitAND(WinGetState(WinGetTitle("")), $value)

    con $value uguale al valore dello stato che ci interessa conoscere (date un occhio alla guida ufficiale per la tabella completa degli stati);
    BitAND ritornerà 1 se lo stato è attivo nella finestra specificata, 0 in caso contrario


    AutoIt mette nelle nostre mani da coder consumati delle funzioni decisamente potenti; possiamo eseguire molte operazioni sulle finestre
    Con WinActivate possiamo dare il focus a una determinata finestra, con WinActive controlliamo se una finestra è attiva o meno;
    Con WinClose chiudiamo una finestrea, con WinKill forziamo la sua chiusura;
    Con WInlist recuperiamo un array bi-dimensionale contenente titoli e handle di tutte le finestre aperte (comprese le finestre nascoste);
    Con WInMove possiamo spostare la nostra finestra;
    Con il gruppo di funzioni WinWait* (-, Active, NotActive, Close) possiamo stoppare l'esecuzione dello script fino a quando una finestra non esista, sia attiva o venga chiusa
    Con il gruppo di funzioni WinSet* possiamo settare stato, titolo, trasparenza e proprietà (come sempre in primo piano) di una finestra.




    CODICE
    WinWaitActive ("doh.txt")
    WinSetTrans(WinGetTitle(""), "", 180)
    WinSetOnTop (WinGetTitle(""), "", 1)



    Per specificare il titolo in una funzione Win* esistono 4 modalità:
    1. (default) controlla che il titolo di una finestra cominci per la stringa inserita
    2. Controlla che nel titolo di una finestra sia presente la stringa inserita
    3. Controlla che il titolo di una finestra sia perfettamente uguale alla stringa inserita
    4. Controlla particolari campi di una finestra

    il 4 metodo usa una sintassi particolare.
    In una funzione, nel parametro titolo, sarà necessario inserire, [nome_del_campo:stringa-da-cercare-nel-campo]
    nome_del campo può essere il titolo (TITLE), la classe (CLASS), etc (vedi guida ufficiale per la tabella dei campi)
    stringa-da-cercare-nel-campo è invece la stringa che bisognerà ricercare nel campo specificato
    Più campi possono essere separati dal punto e virgola




    CODICE
    WinClose("[LAST]")





    CODICE
    WinClose("[TITLE:7.hmtl ; CLASS:Notepad]")



    Per selezionare un metodo possiamo usare Opt("WinTitleMatchMode", $numero_della_modalità)


    CODICE
    Opt("WinTitleMatchMode", 2)
    $list = WinList ("")
    For $x = 1 to $list[0][0]
    WinSetTrans ("Mozilla-Firefox",150)
    Next




    La guida è di FRAEV,dal forum di BitesInTheVeins;questi sono i comandi principali di AutoIT,quelli completi li trovate nella guida ke ho uppato nell'altro topic,anke se io vi consiglio non quella in italiano, ma quella in inglese perche e mooolto piu completa...!!!


    +-------------------------------------------------+


    Mi sono permesso (_58AD7_) di modificare la guida in alcuni punti errata e di aggiungere il download ke prima nn era disponibile....nonostantetutto non sono riuscito ad aggiustare la parte non funzionante di codice nella sezione "IF THEN ELSE ENDIF" in quanto non capisco il criterio con cui l'abbia scritto visto ke io lo faccio diversamente!


    Edited by black224 - 14/9/2009, 11:10
     
    .
  2. black224
        Like  
     
    .

    User deleted


    Spoiler by black224
     
    .
  3. DarkDevil88
        Like  
     
    .

    User deleted


    molto interessante!!!!!
     
    .
  4. GDM1
        Like  
     
    .

    User deleted


    CITAZIONE
    Troppo lunga...messa sotto spoiler

    Don't worry!!! Hai fatto bene xD

    Cmq si possono realizzare davvero bei programmi!!! se volete dare un occhiata ne avevo postato uno
    nell'angolo dell'utente per creare file batch!!!
     
    .
  5. MS-DOS
        Like  
     
    .

    User deleted


    Sezione sbagliata....Sposto in Programmazione
     
    .
  6. simone1000
        Like  
     
    .

    User deleted


    WoW...La posso mettere in un forum? tranquillo che metto la fonte,e poi...anche per me c'è lavoro,per togliere tutte le scritte codice e mettere tutti i codici tra le stringhe [code][/code] xD
     
    .
  7. MS-DOS
        Like  
     
    .

    User deleted


    Non ci resta che aspettare la risposta di GDM1
     
    .
  8. DarkDevil88
        Like  
     
    .

    User deleted


    magari mandagli un messaggio privato.
     
    .
  9. MS-DOS
        Like  
     
    .

    User deleted


    CITAZIONE (DarkDevil88 @ 31/12/2009, 10:30)
    magari mandagli un messaggio privato.

    Bhè, se non risponde qua non credo che possa mai rispondere ad un messaggio privato AsD
     
    .
8 replies since 13/9/2009, 20:54   349 views
  Share  
.