dieses tut hat MaZze von cpg geschrieben und ich ?bernehme es hier weil es einfach sehr aufschlussreich ist und man sollte es sehr gut verstehen ohne vorkenntnise.
______________________________________________________________
[AutoIt] Grundlagen I
Erste schritte :- Ladet euch AutoIt runter
(am besten die neueste version)
You are not allowed to view links.
Register or
Loginhttp://www.autoitscript.com/autoit3/downloads.shtml
- Macht euch etwas mit dem Programm vertraut
(einfach mal starten und sich angucken wie es so aussieht)
______________________________________________________________
Wir schreiben unser erstes Programm :Als erstes zeige ich euch den gesamten Code, anschlie?end werde ich st?ck-f?r-st?ck alles erkl?ren.
Run ("notepad.exe")
WinWaitActive ("Unbenannt")
Send ("Jetzt wird Text getippt...")
Send ("{enter}")
Send ("Das k?nnten wir auch selbst machen...")
Send ("{enter}")
Send ("Aber wozu haben wir AutoIt?")
Sleep (5000)
Send ("!{F4}")
Sleep (1000)
Send ("{right}")
Sleep (1000)
Send ("{enter}")
Exit
Startet den "SciTE Script Editor". (Alle Programme / AutoIt v3 / SciTE Script Editor)
(Standard gem?? sollte jetzt ein leeres project vor euch sein)
______________________________________________________________
Jetzt kommen wir zu den einzelnen befehlen:Den anfang habe ich mit Run ("notepad.exe") gemacht.
Run ("dateiname")
Besonders wichtig ist es den dateinamen in
"xxx.exe" zu schreiben.
Bei AutoIt werden die meisten bestimmten werte in "xxx" zeichen geschrieben.
Ansonsten sind es einfach zahlen oder zeichen die nichts bedeuten.
(Das trifft nicht auf alles zu ! Aber f?r unser beispiel sind die "xxx" zeichen sehr wichtig !)
In unserem Fall war das "notepad.exe".
Da Notepad ein standard programm ist brauchen wir hier ausnahmsweise mal keinen genauen pfad.
Nat?rlich gibt es auch hier aussnahmen.
Beispielsweise muss man bei einer datei die im selben ordner ist wie euer script/programm auch keinen pfad angeben.
Bei allen anderen Programmen w?re es jedoch ratsamer einen pfad anzugeben.
______________________________________________________________
Als n?chstes kam der befehl WinWaitActive ("Unbenannt") an die reihe.WinWaitActive ("fenstertitel") AutoIt arbeitet extrem schnell !
(wenn man mal unsere eigene geschwindigkeit bedenkt)
Und wie jedes Programm ist AutoIt auchnur so "klug" wie der programmierer.
So w?rde unser script einfach "drauflos-tippen" h?tte ich die vielen Sleep() befehle nicht gesetzt.
Durch den Befehl
WinWaitActive (fenstertitel) wartet AutoIt solange mit seiner Arbeit bis das Fenster bereit und aktiv ist.
Sehr nützlich, sollte man im hinterkopf behalten.
Der titel ist nichts anderes als dieser kleine text da oben im fenster.
Umso genauer man ihn eingibt,umso besser kann man Autoit auch nutzten.
(in unserem beispiel reicht es wenn wir nur "Unbenannt" schreiben)
______________________________________________________________
Jetzt kommen wir zu einem befehl den wir wohl am häufigsten benutzt haben : SendSend ("text/{tasten}")Mit diesem befehl wird einfach etwas abgeschickt.
Seien es texte oder aber bestimmte knöpfe.
Ganz wichtig ist hierbei folgendes :
Wenn man text verschicken will schreibt man :
Send ("text")Will man bestimmte knöpfe senden (z.B. strg/alt/esc/enter/etc) schreibt man
Send ("{tasten}")Aber ganz wichtig, bei beiden varianten ist es, dass ihr immer darauf achten m?sst das euer text zwischen "xxx" steht.
Ansonsten klappt es nicht.
Nat?rlich kann man beides auch wunderbar kombinieren. So ist es z.B. kein Problem wenn ich schreiben w?rde :
Send ("Zeile1{Enter}Zeile12{Left}{Delete}{Right}{Enter}Zeile3")______________________________________________________________
Der nächste befehl ist Sleep :Sleep (1000)Sleep (wartezeit)
Mit Sleep kann man wunderbar programme pausieren.
Oder einen kleinen "zwischen-stop" einlegen.
Hier ist besonders zu beachten das die wartezeit in millisekunden aufgeschrieben wird.
Da wohl die meisten neulinge lieber auf "ganze sekunden" vertrauen solltet ihr euch einfach folgendes merken :
1000 = 1 sekundeIch hab den befehl benutzt damit ihr euch die schritte im notepad etwas schöner ansehen könnt.
Es würde auch ohne gehen. (aber dann würde die show schon vorbei sein bevor ihr wisst was los ist)
______________________________________________________________
Jetzt kommen wir noch einmal zu SendSend ("text/{tasten}")Man kann tasten+text in einer bestimmten reihenfolge abtippen.
Aber natürlich ist es auch m?glich ganze tastenkombinationen zu benuzten.
In unserem beispiel habe ich die kombination alt+F4 benutzt. (damit schlie?t man das ge?ffnete fenster)
Bei AutoIt gibt es für die knöpfe Strg/Alt/etc. bestimmte "sonderzeichen".
Alt = !
Strg = ^
Also hab ich geschrieben :
Send ("!{F4}") ______________________________________________________________
Und nun kommen wir auch zum ende unseres scripts.Dieses ende symbolisieren wir mit dem befehl :
ExitDurch diesen befehl wird euer script einfach geschlossen.
Und er muss nicht immer "nur" am ende eines scripts stehen.
Mit ihm kann man ein programm im fall der f?lle auch einfach schlie?en.
(If/Else - HotkeySet - etc.)
______________________________________________________________
Wichtig :AutoIt-Projecte (source-files) werden immer als *.au3 Datein gespeichert !
Niemals direkt als *.exe speichern !
Dazu gibt es den Compiler :)
______________________________________________________________
[AutoIt] Grundlagen II
Vorwort :Was werde wir erarbeiten?
Nun ich dachte wir wagen uns jetzt mal an die "Variablen" und die Befehle mit denen man die Maus bewegt bzw. autoIt sagt was sie anzuklicken hat, etc.
______________________________________________________________
Was sind "Variablen" ?Eine Variable ist nichts anderes als ein "Platzhalter".
Es gibt Scripte da wird ein bestimmter wert ?ber 1000 mal verwendet.
Wieso soll man sich die finger wund tippen beim schreiben des source-codes, wenn man es genauso gut abk?rzen kann?
Eine Variable wird in AutoIt durch das $(dollar)-symbol kenntlich gemacht.
So wei? AutoIt das es sich um eine Variable handelt und nicht etwa um einen Befehl, etc.
______________________________________________________________
Gibt es für Variablen ein Grundgerüst?Das Grundger?st ist ganz simpel :
$variable = Wert/"Wert"Ganz wichtig ist hierbei folgendes :
AutoIt unterschiedet zwischen gro? und kleinschreibung bei Variablen !
So sind (z.B.) :
$Variable = 10
$VaRiabLe = 10
$vAriabLe = 10
nicht das gleiche !
Ihr solltet euch angew?hnen bei variablen immer klein zu schreiben.
So kommt es nicht zu problemen.
______________________________________________________________
Darf ich alles als Variable schreiben?So ziemlich alles ist erlaubt. (solange $ davor steht)
Aber so ganz ohne ausnahmen geht es auch hier nicht.
So sind zeichen wie !"?$%&/()=? etc. unzul?ssig.
Ebenso wie ??? sowie ???
______________________________________________________________
Ihr k?nnt nat?rlich auch Text und/oder andere Variablen miteinander verbinden.
So m?sst ihr nicht st?ndig einen neuen Send() befehl setzten.
Um eine Variable mit einem String, das ist text zwischen den "xxx"-zeichen, zu verbinden ben?tigt ihr das zeichen
&
Ein richtig verbundener Text w?rde so aussehen :
$variable = "nummer 1"
Send ("Text " & $variable)
Ergebnis => Text nummer 1
(richtig)
Wie ihr seht hab ich nur den Text in Strings ("xxx") geschrieben.
Das liegt daran das AutoIt alles was in Strings steht als "String" wertet, und nicht etwa mehr als Variable.
So ist z.B. das hier keine Text indem eine Variable benutzt wird :$variable = "nummer 1"
Send ("Text & $variable")
Ergebnis => Text & $variable
(falsch)
Ihr seht was passiert w?re?
AutoIt h?tte den text einfach so abgetippt wie er im String steht.
Und nicht etwa so wie wir ihn gebraucht h?tten.
______________________________________________________________
Aber jetzt mal ein kleines Beispiel davon wie man Variablen anwenden k?nnte.
Beispiel (ohne Variablen) :Stellt euch vor ihr wollt eine Massenmail schreiben.
Send ("Hallo Kevin,")
Send ("{Enter}")
Send ("Ich veranstalte am xx.xx.xx um xx:xx einen Ausflug.")
Send ("{Enter}")
Send ("Ich w?rde mich freuen wenn du kommen w?rdest.")
Send ("{Enter}")
Send ("Achja Kevin, es k?nnte sehr sp?t werden. Sag deinen Eltern bitte bescheid.")
Send ("gez.: MaZze")
So ihr wollt aber die selber nachicht an 3 weitere freunde schicken.
Alles wieder neu abtippen?
Wieso nicht einfach per Variable?
Beispiel (mit Variablen) :$freund1 = "Kevin"
$freund2 = "Andreas"
$freund3 = "Julia"
$freund4 = "Anne"
Send ("Hallo " & $freund1 )
Send ("{Enter}")
Send ("Ich veranstalte am xx.xx.xx um xx:xx einen Ausflug.")
Send ("{Enter}")
Send ("Ich w?rde mich freuen wenn du kommen w?rdest.")
Send ("{Enter}")
Send ("Achja " & $freund1 & ", es k?nnte sehr sp?t werden. Sag deinen Eltern bitte bescheid.")
Send ("gez.: MaZze")
In diesem Fall m?ssen wir "nur" den namen der Variable austauschen und schon ist unsere "Massenmail" fertig.
Jetzt wisst ihr was Variablen sind.
Das solltet ihr unbedingt lernen!
Den ohne Variablen kommt man bei AutoIt einfach nicht aus.
______________________________________________________________
Wie bewege ich die Maus?
Und wie bestimme ich wo geklickt bzw. gedr?ckt gehalten wird?Fangen wir doch mit einer simplen bewegung an
Das Grundger?st daf?r ist :
MouseMove (x, y)
Was soll x und y bedeuten?
Das sind einfache Bildschirm-Koordinaten.
Je nachdem was ihr f?r eine Bildschirmaufl?sung habt ist der punkt, der geklickt wird immer ein anderer.
______________________________________________________________
Aber wie krieg ich raus wo dieser punkt (x, y) ist ?Dazu hat AutoIt ein ganz tolles Tool. (in der Standard-Installation enthalten)
Dieses Tool nennt sich "AutoIt Window Info" (Alle Programme / AutoIt v3 / AutoIt Window Info)
?ffnen wir es dochmal und schauen es uns inruhe an.
Wie ihr seht sind dort sehr viele informationen aufgelistet.
Doch f?r uns interessant sind eigentlich nur :
>>>>Window<<<<
"Title"und
>>>>Mouse<<<<
"Position"
Mit "Title" haben wir einfach den Fenstertitel.
Man sollte bedenken das nicht jedes Fenster oben so nen "balken" hat wo der Titel drinsteht.
Und das was wirklich interessant f?r uns ist, ist der "Mouse"-Bereich.
Hier sehen wir schon den Eintrag "Position".
Dieser gibt uns die x/y werte an auf der unser mauszeiger gerade steht.
Aber da diese Option noch sehr viele andere informationen hat, die wir zumindest jetzt noch nicht brauchen, w?rde ich vorschlagen das wir eine andere karteikarte w?hlen.
Wie w?re es mit "Mouse"?
Hier haben wir nur die x/y koordinaten.
(und noch ein paar andere dinge die uns erstmal egal sein k?nnen)
______________________________________________________________
Wir wollen das unsere Maus von Links nach Rechts geht.Also suchen wir uns erstmal einen startpunkt.
Dazu benutzten wir unser sch?nes neues Tool. (AutoIt Window Info)
Ich arbeite mit der Bildschirmaufl?sung : 1280x1024
Falls ihr die selbe habt k?nnt ihr gerne meine "beispiel-koordinaten" nehmen.
Andernfalls w?re es ratsam eure eigenen zu nehmen.
Mein startpunkt ist (x=100 y=500) und mein endpunkt ist (x=1000 y=500).
Also schreiben wir :
MouseMove (100, 500)
Sleep (1000)
MouseMove (1000, 500)
Exit
Wie ihr sehen k?nnt wird die maus durch diesen befehl nur bewegt.
______________________________________________________________
Was aber wenn wir etwas bestimmtes anklicken wollen?Nun da brauchen wir wieder x/y koordinaten.
Und wie bekommen wir die?
Genau! Durch unser "AutoIt Window Info"-Tool.
Das Grundger?st ist :
MouseClick ("Maustaste", x, y)Also schreiben wir z.B. :
MouseClick ("left", 700, 500)
Durch diesen befehl w?rde AutoIt auf dem Punkt (x=700 y=500) die Linke-maustaste dr?cken.
______________________________________________________________
Kann ich auch eine Taste gedr?ckt halten? (text markieren, etc.)Selbstverst?ndlich ist auch ein solcher befehl vorhanden.
Das Grundger?st ist :
MouseDown ("Maustaste")bzw.
MouseUp ("Maustaste")So k?nnen wir eine taste gedr?ckt halten (MouseDown) bzw. sie wieder loslassen (MouseUp).
Aber weil es in diesem befehl keine x, y koordinaten gibt, w?re es ratsam die Maus erst mit hilfe von
MouseMove an die richtige stelle zu bringen.
So k?nnte beispielsweise ein ablauf aussehen :
MouseMove (100, 500)
MouseDown ("left")
MouseMove (800, 500)
MouseUp ("left")
Exit
Was ist passiert?
Zuerst ist unser Mauszeiger an die Punkte x=100 y=500 gebracht worden. (MouseMove)
Danach wurde die linke maustaste gedr?ckt gehalten. (MouseDown)
Anschlie?end wurde die maus wieder bewegt. (MouseMove)
(wie es beim markieren bzw. drag-and-drop ?blich ist)
Zu guter letzt wurde die maustaste wieder losgelassen. (MouseUp)
______________________________________________________________
Jetzt solltet ihr wissen was es mit Variablen aufsich hat und wie man die Maus an bestimmte punkte bringt, bzw. sie dazu bringt etwas anzuklicken.
Beispiel zu der benutztung von Variablen :
Ihr sollt nur sehen wie wichtig es sp?ter ist, dass man wei? wie man Variablen einsetzt.
#include <File.au3>
#include <String.au3>
$file = "daten.txt"
$id = InputBox ("Daten", "ID")
$pw = InputBox ("Daten", "Passwort", "", "*")
$crypt_id = _StringEncrypt (1, $id, "MaZze")
$crypt_pw = _StringEncrypt (1, $pw, "MaZze")
FileWrite ($file, "")
_FileWriteToLine ($file, 1, $crypt_id, 1)
_FileWriteToLine ($file, 2, $crypt_pw, 1)
$id2 = FileReadLine ($file, 1)
$pw2 = FileReadLine ($file, 2)
$crypt_id2 = _StringEncrypt (0, $id2, "MaZze")
$crypt_pw2 = _StringEncrypt (0, $pw2, "MaZze")
MsgBox (0, "ID+Passwort", "Deine ID ist "&$crypt_id2&@CRLF&"Dein PW ist "&$crypt_pw2)
Tooltip ("Und nun schau dir mal den Inhalt der datei Daten.txt an.... ^^", 300, 300)
Sleep (6000)
Exit
Das werden wir alles noch lernen !
Aber zum jetztigen zeitpunkt m?sst ihr es euch wohl einfach komentarlos ansehen.