AutoIt - GUIDE

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • ..:: Vorwort ::..


    AutoIt wurde 1999 von Jonathan Bennett erfunden. Diese kleine aber feine Programmiersprache ist sehr scriptlastig nicht wie bei VB oder C# von einem Form Designer abhängig. Diese sprache ist seehr leicht zu lernen und bietet genug potenzial um damit auch Chats spiele etc. zu programmieren ^^.


    ..:: Vorteil ::..


    Der große Vorteil von Autoit gegenüber anderen Programmiersprachen ist das AutoIt eine seeehr gute Helpfile(F1) besitzt Dort ist jede einzelne Funktion
    und jeder Befehl, mit Informationen
    und Beispiel, dokumentiert.


    ..:: Was brauche ich ? ::..


    Zu allererst brauhen wir einmal den Script editor SciTe und den rest von autoit :D


    Rest -> http://www.autoitscript.com/cg…toit3/autoit-v3-setup.exe
    SciTe Erweitert -> http://www.autoitscript.com/cg…ownload/SciTE4AutoIt3.exe


    Wahlweise könnt ihr euch auch noch den Koda Form Designer runterladen ein kleiner Form Designer für autoit ^^


    Koda -> http://www.autoitscript.com/fi…/lookfar/koda_1.7.0.1.zip


    ..:: Mein erster Script ::..


    Zu allererst erstellt ihr auf dem desktop mit rechtsklick -> Neu -> Neuer Autoit Script.au3 einen autoit Script und benennt ihn meinetwegen um in MeinErsterScript.au3 danach macht ihr darauf einen rechtsklick und geht auf Edit Script


    So... nun seht ihr SciTe hier dann steht dort etwas drinnen dass ihr alles wegmahcen solltet zu dem was das ist kommen wir später noch ^^


    Lasst uns mal eine GUI (Graphical User Interface) schreiben zuallererst includen wir die UDF(User Definded Commands) GUIConstants das machen wir wie folgt.


    Code
    #include <GUIConstants.au3>


    #include heißt das eine datei zu dieser hinzugefügt wird bei einer UDF sind das meistens Commands etc. in diesem fall includen wir GUIConstants damit wir später das kleine X oben am rand des Windows Fenster definieren können^^. So nun lasst ihr ein zwei zeilen frei und schreibt:


    Code
    $GUI = GUICreate("Meine Erste GUI",300,300)


    $GUI ist eine Variable die in diesem Fall den Befehl GUICreate beinhaltet. GUICreate sagt uns Erstelle eine GUI mit dem Titel "Meine Erste GUI" und BeitexHöhe 300x300.


    Code
    $Button = GUICtrlCreateButton("Mein erster Button",0,200,300,25)


    $Button ist wieder eine Variable (die erkennt man an dem $ davor ^^) GUICtrlCreateButton heißt erstelle einen Button mit der Aufschrift Mein erster Button an der position Left:0 Top:200 mit größe 300x25


    Code
    $Label = GUICtrlCreateLabel("Ein Label",0,100,300,25)


    Kennen wir ja bis auf dem command GUICtrlCreateLabel lässt ein Label (ein stück text) erscheinen das an der Position Left:0 Top:100 Größe 300x25 vorhanden ist.


    Code
    GUISetState(@SW_SHOW)


    Das Setzen wir jetzt noch unter unsere GUI das heißt SETZE GUI AUF SW_SHOW (SW_SHOW = Sichtbar / SW_HIDE = Unsichtbar)


    Code
    While 1


    Nun schreiben fangen wir mit einer While schleife an damit die Form nicht direkt ausgeht zu den Schleifen komm ich ein andermal aber zu While sag ich jetztmal was alles was zwischen While X und WEND steht wird immer wieder ausgeführt (eine endlosschleife) welche man aber braucht damit die gui nicht direkt wieder ausgeht ^^


    Code
    While 1;Hier schreiben wir jetztmal unsere "Funktion" hin (keine Func xD einfach nur das was unsere GUI machen soll^^)WEND


    Wie ihr schon sehen könnt schreibe ich irgendeinen mist in die GUI und trodzem klappt sie das liegt an dem ; davor denn wenn ihr ein ; setzt wird alles dahinter als Kommentar gefasst wie bei C++ das // oder bei VB das '


    nun schreiben wir zwischen das While 1 und das WEND:


    Code
    $msg = GUIGetMsg()Switch $msgCase $GUI_EVENT_CLOSEExitCase $Button;Hier kommt gleich was hin xDEndSwitch


    So wir erstellen einen Switch der es möglich macht auf die Buttons etc. via Case zu klicken $GUI_EVENT_CLOSE ist die von GUIConstants berreitgestellte Variable die das X oben am fenster definiert und darunter direkt das was passieren soll nämlich Exit (Ausmachen xD) darunter sehen wir Case $Button das steht dafür was passiert wenn wir auf den button drücken ;) und ein EndSwitch um das ganze zu beenden( also den switch)


    so nun fügen wir unter das Case $Button noch ein das es den Text von unserem Label verändern kann dazu schreiben wir rein


    Code
    GUICtrlSetData($Label, "Hallo Bisafans ;)")


    Das heißt Setze den Text von Label zu Hallo Bisafans ;)


    so hier nochmal alles in einem xD


    Code
    #include <GUIConstants.au3>$GUI = GUICreate("Meine Erste GUI",300,300)$Button = GUICtrlCreateButton("Mein erster Button",0,200,300,25)$Label = GUICtrlCreateLabel("Ein Label",0,100,300,25)GUISetState(@SW_SHOW)While 1$msg = GUIGetMsg()Switch $msgCase $GUI_EVENT_CLOSEExitCase $ButtonGUICtrlSetData($Label, "Hallo Bisafans ;)")EndSwitchWEND


    So müsste es bei euch nun auch aussehen^^


    ..:: If - Abfragen ::..


    Ein wichtiger Teil in Autoit sind If Abfragen sie sind in allerlei programmiersprachen von nutzen erstmal eine kleine einweisung
    If = Wenn
    EndIf = Ende Wenn
    Else = Ansonsten
    Then = Dann


    If Bedingung Then Ausführung


    fangen wir an mit einer einfachen if abfrage berreiten wir unseren code wie folgt vor


    Code
    $x = 0


    bitte kopiert diesen code so ^^ also lasst uns mal anfangen ;)


    Code
    $x = 0If $x = 0 Then MsgBox(0,"Autoit Guide","x ist 0")


    Wenn x = 0 ist dann kommt eine Msg box und sagt uns das x 0 ist :) so jetzt erweitern wir das mal


    Code
    $x = 0  If $x = 0 Then MsgBox(0,"Autoit Guide","x ist 0")$x = ($x + 1) ;jetzt ist x = 1 xDIf $x <= 10 Then MsgBox(0,"Autoit Guide","x ist kleiner als 10")


    so jetzt könnt ihr schon zahlen bestimmen die kleiner als 10 sind ;) jedoch wollen wir das erweitern^^


    Code
    $x = 0  If $x = 0 Then MsgBox(0,"Autoit Guide","x ist 0")$x = ($x + 1) ;jetzt ist x = 1 xDIf $x <= 10 Then MsgBox(0,"Autoit Guide","x ist kleiner als 10")$y = Random(1,100,1) ;von 1 - 100 und nur ganzahlige heißt die letzte 1 ^^If $y <= 50 ThenMsgBox(0,"AutoIt Guide","Y ist kleiner als 50 (genau : " & $y & " )")Else ;Else = Ansonsten also wenn y nicht kleiner als 50 ist.MsgBox(0,"Autoit Guide","Y ist größer als 50 (genau : " & $y & " )")EndIf


    Das ist im Grundlegenen fast alles ;) jetzt nochwas mitnem Text als abschluss für If abfragen *gg*


    Code
    $input = InputBox("PW Feld","Wie lautet das passwort ?")If $input = "Bisafans.de" ThenMsgBox(0,"PW Feld","RICHTIG :D")ExitElseMsgBox(0,"PW Feld","FALSCH !!!")ExitEndIf


    Das wäre jetzt ein BSP wie man ein Passwort feld macht ^^ wenn ihr jedoch aus eurer GUI etwas auslesen wollt müsst ihr den befehl GUICtrlRead nutzen ! ;)


    Code
    guicreate("lol",300,300)$test = guictrlcreateinput("",0,0,300,25)$button = guictrlcreatebutton("Lesen",0,100,300,25)GUISetState(@SW_SHOW)While 1$msg = GUIGetMsg()Switch $msgCase $button$read_text = GUICtrlRead($test)MsgBox(0,"Autoit Guide","Im Inputfeld steht : " & $read_text)EndSwitchWEND


    ..::Funktionen::..


    Durch Funktionen könnt ihr euch eigene Commands erstellen oder bestimmte Abläufe verkürzen/vereinfachen etc.


    Code
    Func _Exit()ExitEndFunc


    Das ist zum beispiel eine Funktion die das Programm schließt also


    dieser _ muss nicht sein aber es gehört zum guten ton :P


    Func _HIER_KANN_ALLES STEHEN_UND_MAN_BRAUCHT_EIN() ;am ende :P


    und ein Endfunc muss irgendwann darunter :P


    Code
    MsgBox(0,"LOL","LOL")Func _Blaa()MsgBox(0,"BYE","BYE")ExitEndFunc


    die funktion löst sich nicht aus Func _Blaa() weist nur _Blaa eine Funktion zu auslösen könnt ihr diese wie folgt :)


    Code
    MsgBox(0,"LOL","LOL")_Blaa() ;<=================== So geht das !!! :PFunc _Blaa()MsgBox(0,"BYE","BYE")ExitEndFunc


    okok jetzt solltet ihr wissen wie man funcs nutzt nun machen wir mal unseren eigenen Command^^


    Wir nutzen oft MsgBoxen aber haben keine lust immer dieses (0,.... einzugeben also die 0 und das komma nerven uns total da das autoit ist können wir diesen vorgang naklar umgehen wie folgt :D


    Code
    Func _BisafansMsgBox($titel, $text)MsgBox(0,$titel,$text)EndFunc


    Durch das setzen der Variabeln in der Func werden diese auf die commands die in der func stehen kopiert bsp _BisafansMsgBox("LOL","Blaaa") würde sich jetzt eine msg box öffnen wo der Titel LOL und der text Blaaa wäre ^^ hier ein bsp ;)


    Code
    _BisafansMsgBox("LOL","Das ist cool^^")Func _BisafansMsgBox($titel, $text)MsgBox(0,$titel,$text)EndFunc


    natürlich könnt ihr das auch erweitern und euch so eigene krasse commands machen :3 (mehrere commands in eine zu packen ist auch möglich xD)


    ..:: Schleifen ::..


    Bis jetzt kennen wir ja schon die normale While Schleife


    While 1
    WEND


    So wird in einem Intervall von 1 millisekunde das ausgeführt was darin steht :) naklar können wir auch noch


    While $x <= 5
    WEND


    Solange X kleiner als 5 ist wird der inhalt der schleife ausgeführt


    Bsp:


    Code
    $x = 0While $x <= 100$x = ($x + 1)WENDMsgBox(0,"LOL","X ist jetzt über 100 >:O")


    So nun kommen wir zur Do - Until schleife


    Code
    $lol = 0Do    MsgBox(0, "Wert von $lol ist",$lol)    $lol = $lol + 1Until $lol = 10


    Tue Solange $lol nicht = 10 ist $lol +1 setzen ;)


    es gibt noch For..In...Next schleife aber dazu komme ich ein andermal ^^


    ..:: Schreiben und Lesen von .ini dateien::..


    Mitlerweile könnt ihr ja schon einige sachen schreiben jedoch wollen wir nun auchmal einstellungen etc. speichern <3 daher schreiben wir derweil eine Iniread und iniwrite funktion <3


    fangen wir mal an mit dem schreiben einer ini datei


    Code
    $ini = @ScriptDir & "/testini.ini"$input = Inputbox("Ini","Wie soll unser wert in der ini datei sein ?")IniWrite($ini, "Section","Key",$input)


    so nach dem starten unseres Programms wird eine ini datei geschrieben den den von euch eingegeben Text in input beinhaltet


    Wie ist eine ini datei aufgebaut?


    Code
    [Section]Key=Value[BlablaIwas]Bisafans=Keks


    naklar könnt ihr die section und den key beliebig verändern :).


    Nun wollen wir unsere ini datei natürlich noch auslesen ^^



    Und tadaaa jetzt habt ihr das auch drauf ^^ damit könnt ihr in euren programmen bestimmte optionen etc. speichern und ausführen <3


    _____________________


    Bald gehts weiter :P


    lg


    Kasoki

  • Ganz gutes tut mus ich sagen :thumbup:
    Aber ich persönlich finde es einfacher, erstmal Konsolenanwendungen zu programmieren, und dann erst zur GUI überzugehen, den GUI kann für manche dann auch schon ziemlich Komplex werden...
    Ähm, fals es bei Autolt Konsolenanwendungen gibt^^
    Was ich im Vorwort vermisst habe, sind Informationen wie z.B.: Welchem Syntax sieht die Sprache ähnlich? Plattformunabhängig? etc..


    Aber sonst: :thumbsup:

  • ich habe mir einfach mal diesen code genommen:


    jetzt kann ich das fenster nicht schließen was habe ich falsch gemacht

  • So gehts:



    Kuhl ^^

  • Ich habe mal Kommentare rein gemacht, überprüfe bitte mal, ob ich es verstanden habe xD


    Code
    _ROFL() ;Die Funktion Rofl wird gestartet (ohne definiert zu sein o.o)Func _ROFL() ;okay, hier wird sie gemachtMsgBox(0,0,0) ;box wird geöffnet.. keine höhe, keine Breite, kein Text? _LOL() ;Funktion Lol wird gestartetEnfunc ;Ende von RoflFunc _LOL() ;Funktion LOL wird erstellt.._ROFL() ;Rofl wird aufgerufen..EndFunc ; Funktion ende..


    Checke nicht, wie das Fenster dann offen bleibt..



    Mein Code..
    WIe kann das eigentliche Fenster offen bleiben ^^

  • Falls das hier noch einer liest...:


    Dein Problem ist, dass du nach dem drücken eine Buttons das Programm schließt... Du musst erst das "Exit" nach jedem button (rot) weg machen.
    Damit dann jedoch dein pc zB nicht zu ausgelastet ist, sag ihm am besten einfach, er soll die Abfrage nur all 20 mm machen (sleep).


    Nebenbei: Nice Guide. Hab schon was länger nach ner Methode gesucht .ini dateien zu lesen usw...