[How to] Programm mit einigen Funktionen erstellen
Hallo Elitepvpers
ich habe mir lange überlegt, ob ich diese Tutorial schreiben soll. Ich habe mich entschieden, eine How to zuschreiben, in dem man ein Programm schreibt, was folgendes kann:
Browse Funktion
Speichern und Öffnen
Hotkeys einstellen
3 verschiedene Mausbefehle
Abstand nach jedem Klick einstellen
Imagesearch Funktion
Vielleicht für manche zu einfach, doch mit diesen Programm kann man vieles lernen, finde ich. Auch für Neulinge ist es ein guter Start, da ich auch mit Messangeboxen arbeite und etc....
An alle "Ich kopier nur das Script und gib es als meins aus" ist mir egal, das ich ist eine Lerntutorial, deswegen werdet ihr den vollständigen Scriptcode am Ende nicht finden
Inhaltsangabe:
1. Was brauchen wir?
2. Das Fenster (GUI-FORM) erstellen
3. Wichtige Variablen bzw. Includes von Anfang an setzen
4. Browse Funktion
5. Speichern und öffnen Funktion
6. Hotkeys einstellen
7. Checkboxen Einstellungen
8. Den Hauptbefehl Imagesearch finden + Mausbefehle
9. Timer einstellen
Ihr braucht die Imagesearch.au3 und die Imagesearch.dll. Der Download von den beiden Sachen findet ihr hier ->
Die Imagesearch.au3 müsst ihr in den Include Ordner eures AutOit Installationsordner einfügen und die Imagesearch.dll bei euren Script im Ordner.
Jetzt einmal müssen wir die Imagesearch.au3 "includieren", damit wir die Funktion _Imagessearch funktioniert. Schreibt einfach über oder unter diesen Includes:
Jetzt müssen wir noch einige Variablen im voraus setzen, damit wir das später nicht machen. Die Erklärungen werden dann kommen, wenn ich die Variablen benutze:
Ich glaube jeder kennt die Browse Funktion: Man klickt auf das Button und dann öffnet sich ein Fenster, wo man dann nach einer Datei auf den Datenträgern suchen kann. Dabei kann man einstellen welche Dateien nur angezeigt werden sollen.
Der Befehl der uns das ermöglicht heißt in AutoIt:
PHP Code:
FileOpenDialog
Zunächst muss man den Text der oben links im Fenster steht festlegen, danach im welchen Ordner das Fenster sich öffnet und zum Schluss setzt man einen sogenannten "Filter", d. h. nur Dateiendungen die im Filter stehen werden angezeigt. Hier nochmal:
Beispiele:
Rot = "Wähle dein Bild!"
Grün = z.B. @WorkingDir @ScriptDir @DesktopDir
Blau = AutoIt erkennt nicht alle Bilder fügt einfach das für Filter ein:
PHP Code:
"(*.jpg;*.png;*.bmp;*.gif)"
Danach soll in der 1. Inputbox der Pfad zum Bild stehen, was man gesucht hat, also in dieser:
Deshalb benutzen wir den Befehl
PHP Code:
GuiCtrlSetData
Da wählt man zunächst aus, bei welchen GUI-Befehl die "Data" bzw. Text geändert wird. Ich wähle jetzt die Inputbox, die ich oben im Bild in einem roten Kasten makiert habe. Die zugeordnete Variable heißt bei mir:
PHP Code:
$Input1
Jetzt brauchen wir noch den Pfad der ja dort dann angezeigt werden soll, deswegen
müssen wir FileOpenDialog eine Variable zuordnen, zum Beispiel $file sollte dann so aussehen:
Die Speichern und Öffnen hat folgenden Vorteil: Das Programm erstellt eine *.ini Datei, mit den Inhalten der Inputfeldern. Durch die Funktion Öffnen wird die *.ini Datei ausgelesen und der Inhalt der Inputfeldern dementsprechend verändert. Der Nachteil ist meistens, dass es öfters zu Problemen mit dem Imagesearch kommt, wenn ich das Problem gefixxt habe, ändere ich das in der How to.
Damit man keine weiteren Buttons und etc erstellen muss, benutze ich Menüs. Vorteile sind das hier mehr lernt und das Programm übersichtlicher ist. Ein Menü sieht so aus:
Diese Menüs haben auch Variablen zugeordnet bekommen. Die Variable für das Menü bzw (Menu) ist nicht wichtig, viel wichtiger sind die Variablen von den Untermenüs bzw. (MenuItem) bei mir heißen diese:
PHP Code:
$MENU1 und $MENU2
Damit man seine *.ini individuell benennen kann und einen individuellen Speicherort wählen kann, benutzt
PHP Code:
FileSaveDialog
(das ist genau das selbe nur auf den Button unten recht steht nicht öffnen, sondern speichern) man sollte nur den Filter ändern, also
PHP Code:
"(*.ini)"
und geben den Befehl eine Variable, ich nehme jetzt mal $file2. Jetzt brauchen wir noch noch ein Befehl der auch unsere *.ini erstellt, und der Befehl kann kein anderer sein als
PHP Code:
IniWrite
Eine Ini ist folgendermaßen ausgebaut:
Code:
[Sektion]
key=value
Die Sektion ist sowas wie eine Überschrift, und Key sowas wie ein Beschreibung, zum Beispiel :
Für den Value bzw. Wert müssen wir den Inhalt der Inputfelder nehmen. Doch wir können nicht einfach $Input1 für den Value hinschreiben, sondern müssen den Befehl verwenden:
PHP Code:
GuiCtrlRead
Dieser Befehl lässt ein Inputfeld, Editfeld, Button, Label und etc auslesen. Das könnte dann so aussehen:
Das müsst ihr noch 3 mal machen, für die Sekunden, und wir die Hotkeys.
Hier mal die Sections und Keys für die anderen:
Zeit:
Section = Abstand
Key = Sekunden
Hotkeys:
Section = Hotkey
Key = Starten bzw. Beenden
Um eine *.ini Datei zu öffnen benutzt man dann wieder
PHP Code:
FileOpenDialog
Erklärung Siehe -> Browse Funktion
Wir benutzen nun wieder einen Befehl den uns in dieser How to schon einmal begegnet ist, nämlich
PHP Code:
GuiCtrlSetData
Hier machen wir das selbe wie gerade, angeben, welches Inputfeld geändert werden soll und dann der Text. Nur der Text soll jetzt kein x-beliebiger sein sondern das VALUE von der *.ini, deshalb benutzen wir den Befehl
PHP Code:
IniRead
Dieser befehlt ließt eine *.ini aus und gibt den Wert (Value) zurück. Das coole daran ist, wenn man irgendeine andere *.ini Datei benutzt die nicht von diesem Programm erstellt wurde, werden die Inputfelder nicht gefüllt, weil die nicht die richtige Section und nicht den richtigen Key haben. Man gibt nämlich an welche Section und welchen Key die *.ini haben muss, um den Wert wiederzugeben. Beispiel:
PHP Code:
IniRead($file,"SECTION","KEY","")
Die Spalte von Value lässt man frei, den diese wird ja dann ausgelesen. Dies macht man bei allen vier. Bei dem ersten also beim Pfad würde das dann so aussehen:
Diesen Befehl setzt man meistens vor dem ganzen Script, jedoch wäre das bei unseren Programm sinnlos . Die beiden Befehle werden später unter den Scriptcode von Imagesearch eingefügt.
So zu Anfang müssen wir die Inputfelder auslesen, weil man als User die HotKeys in den Inputfeldern eingibt. Deswegen benutz man wieder den Befehl
PHP Code:
GuiCtrlRead
Die geben wir dann jeweils eine Variable bei mir dann so:
Dann setzen wir den HotKey einmal für Starten und einmal fürs Beenden. Der Befehl ist dabei wie folgt aufgebaut, zunächst der HotKey ( hier bei uns nur a-z ; 0-9 ) und dann der name der des Hotkeys. Also bei mir dann so:
Hat man seine HotKeys gewählt muss man ja noch den Befehl hinzufügen. Für die Befehle benutzt man nicht Case so wie bei den Buttons sondern Fürs beginnen
PHP Code:
Func
und fürs Enden
PHP Code:
EndFunc
Nach Func schreibt man noch den Namen des Hotkeys, bei mir heißen diese starten und beenden. Man muss aber noch dazu zwei Klammern nach dem Namen machen "()" Für den HotKey Beenden, muss man lediglich exit zwischen Func und EndFunc schreiben, so:
PHP Code:
Func beenden()
exit
EndFunc
Für den HotKey starten fügt man einfach zwischen den Func und den EndFunc den Scriptcode für Imagesearch ein. Achtet darauf das beide "Func's" Am Ende des Scripts sind! Nach dem EndSwitch!
Wenn eine von drei Checkboxen angeklickt worden ist, sollen die anderen Checkboxen unanklickbar sein, das würde so aussehen:
Klickt man das Häckchen wieder weg, sollen alle wieder anklickbar sein. Zunächst einmal suchen wir uns unsere 3 Variablen für unsere Checkboxen. Meine heißen:
PHP Code:
$checkbox1 $checkbox2 und $checkbox3
Um herauszufinden ob eine Checkbox angeklickt worden ist benutzt man auch den Befehl
PHP Code:
GuiCtrlRead
Aber dies alleine reicht nicht. AutoIt hat Variablen von Anfang an festgelegt, die man benutzen, eine davon heißt
PHP Code:
$GUI_CHECKED
Heißt so viel angeklickt. Jetzt soll ja wenn diese Checkbox angeklickt ist, die anderen unanklickbar sein, doch bevor wir dazu kommen müssen wir erstmal eine If-Funktion benutzen, also:
PHP Code:
if GUICtrlRead($checkbox1) = $GUI_CHECKED Then
Jetzt gibt wieder eine vorprogrammierte Variable, die sich
PHP Code:
$gui_disable
nennt, heißt so viel wie nicht anklickbar. Jedoch können wir nicht einfach das mit dem Befehl
PHP Code:
GuiCtrlSetData
machen, weil dies sich nur auf Text bezieht. Wir brauchen einen neuen Befehl, nämlich:
PHP Code:
GuiCtrlSetState
Dieser ist genau so aufgebaut wie Guictrlsetdata nur, als Data ist das kein Text, sondern ich sag mal Zustand. Und wenn einer von dreien angeklickt ist soll der "Zustand" der anderen beiden nicht anklickbar sein. Deshalb
Dann hätten wir schoneinmal das wenn die 1. Checkbox angeklickt ist, die anderen unanklickbar sind. So lässt sich vermeiden das jmd. mehrere Checkboxen angeklickt und das Programm sich aufhängt, wenn Imagesearch startet. Falls aber die 1. Checkbox nicht mehr angeklickt ist, sollen die anderen wieder anklickbar sein, deswegen schreiben wir ein
PHP Code:
else
das ist english und heißt sonst, also falls die aussage nicht eintrifft, soll das Programm folgendes prüfen: Es soll gucken ob das Programm nicht angeklickt ist, und da gibt es ein Gegenteil von $GUI_CHECKED, nämlich :
PHP Code:
$GUI_UNCHECKED
Jetzt müssen wir nurnoch, statt
PHP Code:
$gui_disable
auch das gegenteil nehmen, nämlich
PHP Code:
$gui_enable
Jetzt dürft ihr natürlich nicht die beiden
PHP Code:
EndIf
vegessen, diese beenden nämlich die If-Funktion. Ohne diese Funktioniert das nicht. Ingesamt sollte das dann so aussehen:
PHP Code:
if GUICtrlRead($checkbox1) = $GUI_CHECKED Then
GUICtrlSetState($checkbox2, $gui_disable)
GUICtrlSetState($checkbox3, $gui_disable)
else
If GUICtrlRead($checkbox1) = $GUI_UNCHECKED Then
GUICtrlSetState($checkbox2, $gui_ENABLE)
GUICtrlSetState($checkbox3, $gui_ENABLE)
endif
endif
Jetzt muss man sich nurnoch überlegen wo man diesen Code einfügt, irgendwo ist nicht richtig. Die Checkboxen sollen ja nur geprüft werden wenn die Checkbox angeklickt wird. Deswegen schreibt man das unter ( bei mir jetzt)
Die Imagesearch Funktion sucht nach einen Bild. Und speichert dann die Koordinaten. Mit diesen Koordinaten kann zum Beispiel mit der Funktion Mouseklick dann auf das Bild klicken. Zum Beispiel praktisch bei einem Suchspiel Es gibt natürlich schon eine Video Tutorial, der Link ist oben schon. Aber ich erkläre es euch nochmal hier, also zunächst einmal, wie heißt der Befehl:
PHP Code:
_Imagesearch
Dieser Befehl wechselt seine Farbe nicht, deshalb bleibt dieser schwarz. So zunächst einmal, brauch der Befehl ein Bild bzw. Bildauschnitt, diesen haben wir ja bei der Browse Funktion gewählt, deshalb müssen wir dort einfach
PHP Code:
$file
eintragen, den das ist die Variable die wir FileOpenDialog zugeteilt haben. So sieht unser Befehl dann bis jetzt aus:
PHP Code:
_Imagesearch($file,
Jetzt sollen wir festlegen, welche Koordinaten des Bildes festgehalten werden soll. Linksoben = 0 In der Mitte = 1 Wenn er das Bild gefunden hat soll er die Koordinaten von der Mitte des Bildes speichern. Deshalb 1. Jetzt müssen wir angeben, in welchen Variablen die x-Position und die y-Position festgehalten wird, und am Anfang haben wir ja schon 2 Variablen festgelegt :
PHP Code:
$x1 = 0
$y1 = 0
Diese haben einen Wert von 0. Man muss diese Variablen zuvor festlegen, weil jede Variable einen Wert braucht/haben muss. Deswegen hätte ich nicht einfach nur $x1 und $y1 bei Imagesearch nehmen können. Das letze was Imagesearch brauch, ist wie weit das Bild vom Bild bzw. Bildauschnitt abweichen kann 0 = garnicht.... und so weiter. Hier nehme ich 0, den er soll das exakte Bild ja finden. So sieht dann unser Code aus:
PHP Code:
_ImageSearch($file,1,$x1,$y1,0)
Wenn das Bild gefunden worden ist, soll das ja einen Doppelklick auf's Bild machen, Rechtsklick oder Linksklick, das kann man alles mit einer If-Funktion machen. Doch zuvor muss man angeben, wann man einen Doppelklick,Rechtsklick oder Linksklick. Er soll klicken, wenn er das Bild gefunden hat. Und 0 = nicht gefunden und 1 = gefunden. Heißt wir müssen der Imagesearch Funktion eine Variable geben. Ich gebe ihr die Variable $bild, sieht dann so aus:
PHP Code:
$bild = _ImageSearch($file,1,$x1,$y1,0)
Jetzt müssen wir eine If-Funktion machen. Wenn das Bild gefunden worden ist dann soll folgendes passieren, deswegen:
PHP Code:
If $bild = 1 Then
Jetzt müssen die Checkboxen kontrolliert werden, und jetzt müssen wir einfach den selben Befehl nehmen wie zuvor bei den Checkboxen:
PHP Code:
If GUICtrlRead($checkbox1) = $GUI_CHECKED Then
Und falls diese Checkbox angeklickt ist, soll ein Doppelklick gemacht werden, dies macht man einfach mit
PHP Code:
Mouseklick
Dieser Befehl brauch aber die Koordinaten des Bildes, deswegen geben wir für die Werte unsere Variablen an. So:
Zwei mal weil das ja ein Doppelklick sein soll. Jetzt muss ein
PHP Code:
else
danach schreiben, den falls die 1. Checkbox nicht angeklickt ist soll geprüft werden ob die 2. oder vllt die 3. Checkbox angeklickt worden ist. Das Verfahren ist genauso wie bei der 1. Für Rechtsklick macht man:
PHP Code:
MouseClick("RIGHT",$x1,$y1)
Hier nocheinmal für Doppelklick+ Anfang der 2. Checkbox :
PHP Code:
If GUICtrlRead($checkbox1) = $GUI_CHECKED Then
MouseClick("LEFT",$x1,$y1)
MouseClick("LEFT",$x1,$y1)
else
If GUICtrlRead($checkbox2) = $GUI_CHECKED Then
...
...
Ich hoffe ich konnte einigen damit helfen, etwas mehr über AutoIt zu erfahren. Wenn an manchen stellen zu wenig erklärt worden ist, macht mich darauf Aufmerksam ich werde es verbessern!
Credits:
1. Menan für Imagesearch
2. Ludder231 und ich für Checkboxen Funktion
3. Ich für den Rest ( Bilder, Tut, Text)
Wenn ihr gerne mein Script-Code haben möchtet, schreibt mir eine PN, nicht jeder bekommt ihn!
Ehm bei den Hotkeys steht oben bei einem Hotkey beenden und in der Func beenden1 und bei den Checkboxen steht ein s hinter dem EndIf
Edit: Die ButtonConstants.au3 ist doch auch nicht von nöten oder?
Heißt:
Das Programm sucht auf deinen Bildschirm nach dem Bild, was du vorher angegeben hast. Wenns gefunden worden ist, soll das ein Rechtsklick, Doppelklick oder Linksklick aufs Bild machen.
Starten und beenden des Programmes funktioniert dann auch mit Hotkeys.
Außerdem kann man Inhalte speichern und damit schnell aufrufen.
[Alltagstool]Programm mit einfachen aber guten Funktionen! 08/07/2011 - AutoIt - 21 Replies Hi epvp,
Hier ein nützliches Programm von AutoitScript und mir. Für jeden der die Grundlagen von Autoit kennt, sollte es kein Problem sein, dieses Programm nachzumachen, denn es werden sehr einfache Funktionen verwendet! Wir hatten nur die Idee aus einfachen Sachen etwas möglichst nützliches zu machen :)
Funktionen:
*Taschenrechner:
Alle Grundrechenarten, Quadrat, Wurzel und wählen einer zufälligen Zahl.
*Prozess und Fensterkontrolle:
Programm mit keylogger erstellen 01/10/2010 - Metin2 - 13 Replies Wie kann ich mir ein Programm erstellen das wen der jenige seine Daten dort einträgt ich sie auf meine Email bekomme .. Mit welchen programme etc ..
Programm zum Bot erstellen 12/02/2009 - Nostale - 5 Replies Suche ein Programm mit dem ich nen lvl bot erstellen kann pls melden mit link wäre nett^^