Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 02:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Algemein zu AutoIT: Grundlagen!! Für Anfänger!!!

Discussion on Algemein zu AutoIT: Grundlagen!! Für Anfänger!!! within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2011
Posts: 42
Received Thanks: 4
Exclamation Algemein zu AutoIT: Grundlagen!! Für Anfänger!!!

[AutoIt] Grundlagen I

Vorwort :

Ich habe vor ein paar wochen damit begonnen AutoIt zu lernen. Leider waren die Tutorials entweder auf english oder vollgestopft mit diesem "fach-bla bla".
Um anderen leuten den einstieg etwas leichter zu machen bzw. ihnen einen kleinen einblick zu geben schreibe ich dieses Tutorial.
In diesem Forum gibt es einige leute die sich mit dem Programmieren in AutoIt bereits wunderbar auskennen.
Diese Personen würde ich bitten sich etwas zurückzuhalten.
Ich weiß man hätte den script kürzer und schneller schreiben können.
Aber weil er nur zu lernzwecken dient ist er so ganz OK.

Kritik ist aber trotzdem gern gesehen.
Wenn interesse bestehen sollte kann ich auch ein paar mehr solcher tutorials schreiben.

Danke das ihr euch die zeit genommen habt das hier alles zu lesen.

__________________________________________________ ____________

Erste schritte :
- Ladet euch AutoIt runter
(am besten die neueste version)

Das wäre in unserem fall diese Version : Direktdownload
Oder alternativ : Quelle

- Macht euch etwas mit dem Programm vertraut
(einfach mal starten und sich angucken wie es so aussieht)

Anmerkung von Remus:
weiteres dazu findet ihr im Autoit Faq unter Punkt 4

__________________________________________________ ____________

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.

Zitat:
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 : Send
Send ("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}{Ent er} Zeile3")

Am ende werd ich euch noch eine kleine liste mit "befehls"-tasten aufschreiben.
__________________________________________________ ____________

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 sekunde

Ich 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 Send
Send ("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 :

Exit

Durch 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.)

__________________________________________________ ____________

Nun kommen wir zu der versprochenen Liste !
(ich schreib euch mal die oft verwendeten zeichen auf)

Zitat:
! = alt-knopf

^ = strg-knopf

{Enter} = Enter-knopf

{Delete} = lösch-knopf

{left}{right}{up}{down} = "links/rechts/hoch/runter" -knopf (pfeiltasten)

{F1}/..../{F12} = "F1 - F12"-knopf
Anmerkung von Remus: mehr zu dem Send Befehl findet ihr in der Hilfedatei
(siehe Punkt 5)

Mehr werdet ihr anfangs auch ne weile lang nicht brauchen.
__________________________________________________ ____________

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 sympel :

$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 :

Zitat:
$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 :

Zitat:
$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.

Zitat:
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) :

Zitat:
$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 :

Zitat:
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. :
Zitat:
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 :

Zitat:
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)

__________________________________________________ ____________

Ich hoffe das Tutorial hat euch gefallen.

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.

Zitat:
#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.

__________________________________________________ ____________


[AutoIt] Grundlagen III

Vorwort :
Was werden wir erarbeiten?

Ich denke es ist an der zeit das wir nun auch mal lernen wie man bestimmte "werte" in einer (sogenannten) MsgBox ausgibt.
Und die sache mit dem PixelGetColor werden wir in diesem Teil, des tutorials, auch bearbeiten.
Aber ich glaub wir sind auch reif genug für die Befehle InputBox und Tooltip.

Wie immer hoffe ich das es euch spaß macht mein Tutorial zu lesen und dabei AutoIt stück für stück zu lernen

__________________________________________________ ____________

MsgBox - Was soll das sein?

Mit dem Befehl "MsgBox" kann man auf ganz einfache weise bestimmte werte, sei es nun Text und/oder der wert einer Variable/etc., ausgeben.

Das Grundgerüst ist ganz einfach :

MsgBox (Flag, "Titel", "Dein Text")

Die option "Flag" ist dafür da um weitere knöpfe/etc. in die MsgBox einzubauen.
Aber fürs erste nehmen wir den Standardwert "0".

Da ich doch sehr hoffe das ihr die Tutorials I+II gelesen habt muss ich ja wohl nichts mehr zu "Titel" und "Dein Text" sagen.

Beispiel :
Zitat:
MsgBox (0, "Unsere erste MsgBox!", "Hier könnte ihre Werbung stehen :P")
__________________________________________________ ____________

PixelGetColor - Wozu soll das gut sein?

Nun dieser Befehl ist dazu da um auszugeben welche farbe ein bestimmter Pixel auf dem bildschirm hat.
Die Pixel-x befehle werden gerne für Aimbots/oder generel für PixelBots verwendet.
Um diesen befehl effektiv zu benutzten wäre es ratsam zu wissen wie man "Variablen" verwendet.

Das Grundgerüst ist auch recht simpel:

$variable = PixelGetColor(x, y)

Wie anfangs schon angesprochen wäre es ratsam hier kenntnisse mit "Variablen" zu haben.

Beispiel :

Den die Pixelfarbe bzw. der wert des Pixels wird in einer Variable gespeichert.
So würde (z.B.) eine "richtige" verwendung dieses Befehls aussehen :

Zitat:
$farbe = PixelGetColor (300, 300)
MsgBox (0, "Der Wert unseres Pixels", $farbe)
So was haben wir gemacht?
Zuerst haben wir uns einen Punkt ausgesucht über den wir mehr wissen wollen.
PixelGetColor (300, 300)
Anschließend haben wir das "ergebniss" unseres PixelGetColor-Befehls in eine Variable gepackt.
$farbe
Und um diesen Wert jetzt zu "sehen", haben wir das ganze noch so aufgeschrieben das MsgBox es uns einfach anzeigt.
MsgBox (0, "Der Wert unseres Pixels", $farbe)

Mitlerweise solltet ihr wissen wie man an die "x, y"-Werte kommt.
Daher werde ich es nicht nochmal erklären. (siehe "Grundlagen II")

__________________________________________________ ____________

So was haben wir gemacht?
Zuerst haben wir uns einen Punkt ausgesucht über den wir mehr wissen wollen.
PixelGetColor (300, 300)
Anschließend haben wir das "ergebniss" unseres PixelGetColor-Befehls in eine Variable gepackt.
$farbe
Und um diesen Wert jetzt zu "sehen", haben wir das ganze noch so aufgeschrieben das MsgBox es uns einfach anzeigt.
MsgBox (0, "Der Wert unseres Pixels", $farbe)

Mitlerweise solltet ihr wissen wie man an die "x, y"-Werte kommt.
Daher werde ich es nicht nochmal erklären. (siehe "Grundlagen II")

__________________________________________________ ____________

InputBox - Das "Frage-Antwort"-Spiel

Es kommt auch der moment indem man vor hat Programme zu schreiben die sich an den Benutzter anpassen und nicht immer die gleichen werte haben.
Zum Beispiel wenn es darum geht einen Auto-Login zu programmieren.
Jeder hat seine eigenen Daten. (Benutzternamen + Passwort)
Also wäre es "unmöglich" einen "universal" Auto-login zu schreiben.

Und genau für solche fälle ist der Befehl "InputBox" da.

Das Grundgerüst sieht folgendermaßen aus :

$variable = InputBox ("Titel", "Angezeigter Text")

Die option "Titel" werde ich nicht erklären.
Aber "Angezeigter Text" sollte neu für euch sein.
Hier könnt ihr hinschreiben was als "Fragestellung" in der InputBox erscheinen soll.



Und wie ihr im Grundgerüst seht wird auch dieser "Wert" in einer Variable gespeichert.
Irgentwohin muss die "eingegebene information" ja hin.

Beispiel :

So könnte (z.B.) ein "richtig" geschriebener Code aussehen :
Zitat:
$input = InputBox ("Unsere erste InputBox", "Wie heißt du?")
Run ("notepad.exe")
WinWait ("Unbenannt")
Send ("Dein Name ist " & $input)
Exit
Was ist passiert?
Zuerst wurden wir nach unserem Namen gefragt.
InputBox ("Unsere erste InputBox", "Wie heißt du?")
Anschließend wurde unser eingegebener Wert in einer Variable gespeichert.
$input
Danach wurde Notepad gestartet und unser wert wurde "hingeschrieben".
(diesen vorgang kennt ihr bereits)

__________________________________________________ ____________

ToolTip - Klein aber fein!

Wie ihr sicher schon gemerkt habt kann man durch den Befehl "MsgBox" zwar wunderbar werte/etc. ausgeben.
Aber leider (?!) erscheint immer wieder ein fenster das man "bestätigen" muss bevor der script weiterläuft. (man muss immer "ok" drücken)

Also wie sollen wir "kleine bemerkungen" machen ohne gleich 100 mal auf "ok" zu klicken?

Die Lösung ist so klein wie simpel !

Wir brauchen den befehl "ToolTip".
Damit können wir problemlos kleine bemerkungen auf den bildschirm setzten ohne den nutzter alzusehr zu nerven.

Das Grundgerüst sieht so aus :

ToolTip ("Euer Text", x, y)

Nun? Muss ich dazu noch was sagen?
Ich glaube kaum.



Beispiel :

So könnte (z.B.) ein "richtig" geschriebener Code aussehen :

Zitat:
Tooltip ("Nur ein kleiner Hinweis...", 300, 300)
Sleep (10000)
Was ist passiert?
Zuerst haben wir unseren Tooltip befehl benutzt um den text "Nur ein kleiner Hinweis..." auszugeben.
Und das am punkt x:300 y:300.
ToolTip ("Nur ein kleiner Hinweis...", 300, 300)
Anschließend haben wir den befehl "Sleep" verwendet um diesen ToolTip, bzw. unser programm 10 sekunden lang offen zu halten.
Sleep (10000)

__________________________________________________ ____________

So das wars auch schon.
Ich hoffe ich habe alles schön einfach und ausreichend erklärt.
Viel Spaß beim lesen/ausprobieren und lernen.



__________________________________________________ ____________



[AutoIt] Grundlagen IV

Vorwort :

Was werden wir lernen?
Ich dachte mir es ist nun an der Zeit das wir uns mit den Schleifen befassen.
Außerdem ist es immer ganz nützlich sein Programm mit "selbst gewählten" tastenkombinationen zu "steuern".
Daher werden wir uns auch mit "HotKeySet" (Func/EndFunc) beschäftigen.

If / EndIf
Do / Until
While / Wend
Func / EndFunc (HotKeySet)

Wie immer wünsche ich euch viel Spaß beim lesen, lernen und ausprobieren.

__________________________________________________ ____________

f / Else

Es kommt sehr oft vor das man programme schreiben muss die sich an den benutzter anpassen.
Daher wäre es immer ratsam solche Programme mithilfe von "If / EndIf" zu schreiben.
Jenachdem wie sich der benutzter verhält (entscheidet) reagiert das programm anders.

Das Grundgerüst ist auch hier sehr einfach :

If X = Y Then
"Mach dies und das"
ElseIf X = Z Then
"Mach dies und das"
Else
"Mach dies und das"
EndIf

Ein "If"-Befehl muss immer mit einem "EndIf"-Befehl beendet werden.
Wie ihr seht funktioniert das ganze nach dem "Wenn" --> "Dann" - Prinzip :

Wenn X = Y Dann
"Mach dies und das"
Oder X = Z Dann
"Mach dies und das"
Sonst
"Mach dies und das"
EndIf

Den ElseIf Teil könt ihr so oft verwenden wie ihr lust habt.
Schließlich kann es ja sehr viele mögliche werte geben.
Aber ihr müsst immer darauf achten das auch ein Wert angegeben ist!
(ElseIf X = Z Then)

Beispiel :

Zitat:
$input = InputBox ("Ja oder Nein?", "Hast du 'Grundlagen I-III' bereits gelesen?"&@CRLF&"(bitte antworte nur mit 'Ja' oder 'Nein'!")

If $input = "ja" Then
MsgBox (0, "Ja", "Dann lern ma weiter...")
ElseIf $input = "nein" Then
MsgBox (0, "Nein", "Solltest du das nicht besser nachholen?...")
Else
MsgBox (0, "", "Was verstehst du an 'Antworte nur mit Ja oder Nein' eigentlich nicht?!...")
EndIf
__________________________________________________ ____________

Do / Until - Schleife

Es kommt oft vor das man auf bestimmte ereignisse "warten" muss.
Da man aber nie sicher sagen kann wann dieses "warten" sein ende hat, greift man gerne mal auf die "Do / Until"-Schleife zurück.

Wie der Name schon sagt "Wird etwas solange ausgeführt, bis ein bestimmter wert erreicht ist".
Ganz nett wäre das z.B. bei Pixel-x Befehlen.
So könnte man beispielsweise einen bestimmen Pixel/ein Pixelfeld solange überwachen bis sich die Farbe ändert und dann erst mit dem rest des Scripts weitermachen.

Das Grundgerüst :

Do
"Mach dies und das"
Until X = Y

Wie ihr seht gibt es auch hier einen "Anfang" und ein "Ende". ("Do" --> "Until")
Ganz wichtig ist hierbei folgendes :

Der Until- Befehl muss immer eine bedingung enthalten!
(Until X = Y)

Beispiel :
Zitat:
$zahl = 0

Do
$zahl = $zahl + 1
ToolTip ("Unsere Zahl ist : "&$zahl)
sleep (1000)
Until $zahl = 10

MsgBox (0, "", "Unsere bedingung ist erfüllt!")
Wie ihr seht wiederholt sich die schleife solange BIS unsere Variable ($zahl) den wert "10" hat.
Erst dann läuft der Script weiter und es erscheint die MsgBox.

__________________________________________________ ____________

While / Wend - Schleife

Die "While"-Schleife ist ähnlich wie die "Do"-Schleife.
Der einzige unterschied ist der, dass hier nicht solange etwas "gemacht" wird bis eine bedingung erfüllt ist.
Sondern es wird NUR etwas "gemacht" solange eine bestimmte bedingung erfüllt ist.

Das Grundgerüst :

While X = Y
"Mach dies und das"
Wend

Das ganze würde inetwa so aussehen :
(vereinfacht)

Während X = Y
"Mach dies und das"
Wend

Ganz nett kann man das (z.B.) mit PixelGetColor benutzten.

Beispiel :
Zitat:
$pixel = 0xFFFFFF

While $pixel = 0xFFFFFF
$pixel = PixelGetColor (300, 300)
Sleep (100)
WEnd

MsgBox (0, "Pixel", "Unser Pixel hat seine Farbe verändert!")
Hier wird alle 100 millisekunden gecheckt ob unser Pixel (300, 300) die farbe 0xFFFFFF hat. (weiß)
Sobald sich die farbe ändert stoppt die schleife und per MsgBox wird uns mitgeteilt das sich die Frabe verändert hat.

Aber "while"-Schleifen nutzt man auch oft als "endlos"-schleife.
Als "endlos"-schleife bezeichnet man eine bestimmte abfolge von befehlen die sich endlos wiederholen.

Das grundgerüst hierfür ist auch ganz einfach :

While 1
"Mach dies und das"
Wend

Besonders wichtig ist hier die 1
Dadurch wird aus der "while"-schleife eine "endlos"-schleife.

Beispiel :

$zahl = "0"

While 1
ToolTip ("Zahl = "&$zahl)
sleep (100)
$zahl = $zahl + 1
WEnd

__________________________________________________ ____________

HotKeySet - Func / EndFunc

Natürlich kommt irgentwann mal der punkt an dem man nicht nur einfach diese stumpfen "auf-los-gehts-los" - Programme schreiben will, sondern alles per "HotKeys" steuern möchte.
HotKeys sind vom benutzter (bzw. programmierer) speziel ausgewähle Tasten/Tastenkombinationen mit denen man sein Programm steuern kann.

Doch eine sache darf man hier niemals vergessen :

Die Ausgewählten "HotKeys" sind für "andere programme" gesperrt, solange euer Programm läuft.

Durch HotKeySet ist es möglich ganze abläufe mit nur einem einzigen tastenklick(kombi) zu aktivieren/benutzten.

Das Grundgerüst :
Zitat:
HotKeySet ("Tasten/kombi", "funktion")
;.....
;.....Ihr könnt so viele HotKeySet-befehle verwenden wie ihr wollt....
;.....

Func funktion()
"Mach dies und das"
EndFunc
;.....
;.....Aber natürlich muss zu jedem HotKeySet auch eine funktion gehören!.....
;.....

While 1
SLeep (100)
Wend
Ganz besonders interessant ist für uns der erste bereich im HotKeySet-Befehl.
"Tasten/kombi"
Hier müssen wir nämlich hinschreiben mit welcher Taste, bzw. welcher Tastenkombi unsere "Funktion" gestartet werden soll.

Ich für meinen Teil bevorzuge die Strg+Alt-Kombis, aber das kann jeder für sich selbst entscheiden.
Ganz wichtig hierbei ist welche tasten/kombis ihr verwenden wollt.

Bei "einfachen tasten" könnt ihr sie einfach in den "String" schreiben. (abc....123....)
Aber bei "spezielen tasten" müsst ihr die tasten in {x} (geschweifte klammern) schreiben ! (F1-F12, Enter, Tab, Delete, ....)

Alt und Strg sind nur im Kombi-Pack erhältlich ;P
Um sie zu benutzten, schreibt sie einfach vor euere "taste(n)" (z.B. "^!d") --> (Strg+Alt+D)

Bei ganz "besonderen" wünschen könnt ihr auch einen mix verwenden... (z.B. "^!{F1}") --> (Strg+Alt+F1)

Nun kommen wir zu der stelle mit der Funktion.
Wie ihr eure Funktion nennt, ist euch überlassen.
Ganz wichtig aber ist : "Nur normale buchstaben und zahlen dürfen verwendet werden!" (keine sonderzeichen #+*-+äüö, etc...)

Anschließend tragt ihr eure befehle in die Funktion ein.

Eine sache dürft ihr aber nie vergessen :

Am ende jedes scripts, der "HotKeySet"-befehle enthält, muss eine Endloschleife gesetzt werden.

Am besten hierfür eignet sich der Befehl "SLeep (100)", da er "nichts" an eurem script macht, den benutzter nicht stört und dafür sorgt das unser Programm/Script nicht einfach beendet wird.

Natürlich könnt ihr auch befehle in diese Schleife einsetzten... aber das wichtigste ist, das sie Endlos weiterläuft !

Beispiel :

HotKeySet ("^{F1}", "start")

Func start()
Run ("Notepad.exe")
WinWaitActive ("Unbenannt")
Send ("HotKeySet")
EndFunc

while 1
sleep (100)
WEnd

__________________________________________________ ____________

Ich hoffe dieses Tutorial hat euch gefallen.
Viel Spaß beim lernen

lg Noname997
Noname997 is offline  
Thanks
2 Users
Old 11/03/2011, 20:46   #2
 
elite*gold: 0
Join Date: Mar 2011
Posts: 8,645
Received Thanks: 3,454
hm
Freddy​ is offline  
Thanks
2 Users
Old 11/03/2011, 21:59   #3
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
1:1 copy n' paste bis auf das was nach lg kommt...
das von remus ist übersichtlicher und er gibt wenigstens an, dass es nicht seins ist.
butter123 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[AutoIt] Grundlagen I - IV
09/28/2014 - Coding Tutorials - 281 Replies
dieses tut hat MaZze von cpg geschrieben, und ist meiner meinung nach das beste um das Bot erstellen mit autoit zu lernen, ich hab es jetzt abkopiert da Fremdwerbung nicht gewünscht _________________________________________________ _____________ Grundlagen I Vorwort : Ich habe vor ein paar wochen damit begonnen AutoIt zu lernen. Leider waren die Tutorials entweder auf english oder vollgestopft mit diesem "fach-bla bla". Um anderen leuten den einstieg etwas leichter zu machen bzw....



All times are GMT +2. The time now is 02:42.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.