Angepinnt electriZZ'ed AutoIT Tutorial (Anfänger bis Fortgeschrittene)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • electriZZ'ed AutoIT Tutorial (Anfänger bis Fortgeschrittene)

      [FONT="Arial"][FONT="Century Gothic"][SIZE="4"][COLOR="Orange"]electri[COLOR="Yellow"]ZZ[/COLOR][/COLOR][COLOR="DarkOrange"]'ed[/COLOR][/SIZE] [SIZE="6"][COLOR="DeepSkyBlue"]Auto[/COLOR][COLOR="PaleTurquoise"]IT[/COLOR] [COLOR="PaleGreen"]Tutorial[/COLOR][/SIZE][/FONT]
      [/FONT]


      [SIZE="3"]Ich werde hier nach und nach ein komplettes Tutorial mit Kapiteln schreiben.

      Für Anfänger bis Fortgeschrittene.
      Die Anfänger sollten direkt beim ersten anfangen, der Einleitung und sich bis zu den Variablen und Arrays durch schlagen.
      Dann das ganze verdauen und verstehen, erst danach sollten sie sich als Fortgeschrittene an die anderen Sachen ran machen =)

      Ich werde aber noch mehr einführen.
      [/SIZE]


      [FELD="Inhaltsverzeichnis"]
      Einleitung
      Help File
      GUI's
      Variablen und Arrays
      Windows Message Codes
      SQLite (Offline DB)
      Multi Tasking
      Mit DLL's arbeiten
      [/FELD]

      Links zu tutorials die ich hier nicht hinein integriert habe.
      [FELD="Externes"]
      [HOW-TO]Server Programmieren in AutoIT + TCP Infos - by electriZer
      [Guide] AutoIT für Einsteiger - by internetfreak
      [Guide] Die GUI von Autoit - by internetfreak
      [/FELD]

      Ich habe hier hauptsächlich meine anderen Tutorials in ein großes Zusammengeführt, natürlich sind noch ein paar neue Dinge dabei.
      Das Server Tutorial habe ich nicht mit eingefügt, es ist zu groß.



      Bitte postet hier nichts hinein, fragt mich per PM falls ihr Fragen habt =)



    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Einleitung

      .:: Einleitung ::.
      _________________


      Was brauche ich?

      Als erstes muss man sich das AutoIT Pack runterladen,
      dort ist alles enthalten was man braucht.

      :: STEP BY STEP ::


      Als erstes auf die
      -
      AutoIT Download Page
      -Auf "Download AutoITv3" klicken (rechts)
      -Installieren
      ::FERTIG::

      Danach wieder auf die
      -
      AutoIT Download Page
      -Auf "Download Editor" klicken (rechts),
      das ist die Eweiterte Version des Editors,
      mit allen wichtigen Tools,
      wie zB:
      -Koda Form Designer
      -AutoIT Wrapper Tool
      -Tidy tool
      -Obfuscator
      -etc...

      -Installieren
      ::FERTIG::




      Wie mache ich ein neues Programm?

      Als erstes, braucht man eine neue Datei.

      :: STEP BY STEP ::

      In irgendeinen Ordner gehen,
      in dem man die Datei möchte

      -Rechtsklick
      -Auf "Neu"
      -Es erscheint ein Sub Menü,
      dort auf "AutoIT v3 Script"
      :: FERTIG ::


      Dann muss man sie noch zum Editieren öffnen.

      :: STEP BY STEP ::

      -Rechtsklick auf die script datei
      -Auf "Edit Script"
      -Es erscheint ein neues Fenster,
      dies ist der Editor,
      dieser heißt "SciTE" (das sollte man sich merken^^)
      :: FERTIG ::




      Reicht das?

      Vorerst und für Anfänger ja.
      Ok, etwas hab ich noch ;)

      Ihr solltet euch nicht selber "Noob" nennen,
      wer sich selber einen "Noob" nennt,
      ist ein Hoffnungsloser Fall.
      Nur wer Selbstvertrauen hat,
      schaft auch etwas!

      WICHTIG :
      -Immer Cool bleiben 8)
      -Nicht jeden mist Releasen
      -Auf Rechtschreibung achten
      -Darauf achten wie man
      bei den anderne rüber kommt
      - NIX LEECHEN
      - KEIN COPY & PAST

      masn sollte nur Dinge posten,
      die man auch selber gemacht / geschrieben hat!
      Es sei denn man hat die Anweisung
      oder eine Erlaubnis.
      Denn man bekommt den ganzen Ruhm,
      und nicht der eigentliche Author,
      ansonsten wäre es "leechen",
      und das is erbärmlich!!!




      (C) by Jiyan Akgül
    • Help File

      .:: Help File ::.
      _________________


      Was heißt Help File?

      Das ist Englisch und heißt "Hilfe Datei".
      In dem Help File sind alle
      Befehle und Funktionen von AutoIT,
      mit Beispiel und Erklärung dokumentiert.



      Wie öffne ich das Help File?

      Nach dem ihr AutoIT installiert habt,
      eine neue Datei erstellt und geöffnet habt,
      könnt ihr loslegen^^.

      :: STEP BY STEP ::

      Oben in SciTE befindet sich das Menü.

      -Im Menü auf den letzten Eintrag
      "Help" klicken
      -Es erscheint ein Menüfeld.
      dort klickt ihr auf "Help F1"
      -Es erscheint ein neues Fenster,
      dies ist das Help File.


      Wenn man das Help File erst mal kennt,
      merkt man wie umfangreich es ist.


      ::HOW TO::
      __________

      Wie ihr sieht gibt es im linken Tab Menü
      4 Felder.
      "Inhalt"
      "Index"
      "Suchen"
      "Favoriten"
      ___________

      Inhalt

      Hier sind alle Einträge
      als Tree view (~Baumstamm stil)
      unterteilt aufgelistet.



      Index

      Hier könnt ihr etwas
      in das Feld eingeben,
      und das Help File sucht
      automatisch nach übereinstimmenden
      Einträgen, und listet sie auf.



      Suchen

      Hier könnt ihr nach Stichwörtern suchen.


      Favoriten

      Hier könnt ihr besonders
      wichtige Einträge abspeichern
      und abrufen.



      Was ist das Wichtigste?

      Als aller erstes würde ich
      die ganzen GUI Control Styles nennen,
      bei denne auch die nötigen Includes
      angegeben sind.

      Die findet ihr unter:

      Quellcode

      1. AutoIT -> Appendix -> Gui Control Styles


      Dann benötigt ihr noch alle Gui Befehle und Beispiele.
      Die findet ihr unter:

      Quellcode

      1. AutoIT -> Function Reference -> GUI Reference

      Dort sind alle Befehle und beispiele enthalten.

      Und da aus irgndeinem Grund, den ich nicht kenne,
      jeder einen Bot machen möchte.
      Empfehle ich die Mose Funktionen :

      Quellcode

      1. AutoIT -> Function Reference -> Mouse Control

      und die Pixel Funktionen :

      Quellcode

      1. AutoIT -> Function Reference -> Graphic and Sound Functions


      soweit wäre das wichtigste und meistbenutze geklärt^^.


      Gibt es noch was?

      Ja, für die Englisch Muffel gibt es auch eine komplette Deutsche Version der Hilfe Datei.
      Diese wurde vom Deutschen AutoIT Forum erstellt.
      http://translation.autoit.de/


      (C) by Jiyan Akgül

    • GUI's


      .:: GUI ::.


      ______


      Als erstes braucht ihr natürlich irgendwas wo man draufklicken kann

      am einfachsten is natürlich ein Button.
      Ich hab hier ein beispiel mit dem ich hier im guide arbeiten werde :


      $hGui = GuiCreate("My Gui",100,100)

      $Button1 = GuiCtrlCreateButton("Nummer 1",0,0,100,50)

      $Button2 = GuiCtrlCreateButton("Nummer 2",0,50,100,50)

      GuiSetState() ; Das ist der Befehl dafür, dass unsere Controls angezeigt werden


      wenn man diesen Code jetzt startet geht das Fenster gleich wieder weg.

      Wieso?

      Weil der Computer einfach nur ein GUI erstellt und da nach dem GUI kein Code kommt.
      Heißt das für den Computer, dass der Script zu ende ist.

      Damit das GUI nicht mehr aus geht brauchen wir irgendeine endlose Schleife.

      Die bekannteste ist die while-Schleife.
      Und diese bauen wir jetzt in unser Skript ein.

      Anfang der Schleife :


      While 1


      Ende Der Schleife

      WEnd


      _____Das Gui ist Fertig________


      Jetzt kommt das bei dem die meisten Probleme haben

      Die Funktionen

      Am einfachsten ist es sie in die Schleife zu packen (While, For, etc..)

      Dann kann man sie mit einer If abfrage abfragen :


      If $msg = $Button1 then
      {Deine Funktion}
      EndIf



      ...oder mit dem einfachsten :
      Select & Switch


      Select
      case
      $msg = $Button1
      {Deine Funktion}
      EndSelect
      [/code]

      [code]
      Switch $msg
      case
      $Button1
      {Deine Funktion}
      EndSwitch



      Ihr seht bestimmt schon einen Unterschied :D

      Ja bei Select muss man immer


      case $msg = $Button


      schreiben und bei Switch jedoch muss man nur


      case $Button



      Also wer das jetzt einfach für sein GUI anpasst und einer der 3 Varianten in die Schleife einbaut müsste das locker hinbekommen


      (C) by Jiyan Akgül

    • Variablen und Arrays

      Variablen und Arrays


      [SIZE="4"]
      .:: Variablen und Arrays ::.
      __________________________
      [/SIZE]



      Wer noch keinen Schimmer von Arrays und Variablen hat, ist hier gut aufegehoben ;)

      Zur sicherheit schreib ich hier au ein wenig mehr für die Totalen anfänger ^^

      ___

      Man kann Informationen ( Texte, zahlen, etc.. ) in "Variablen" speichern,
      jeder der was in au3 programmiert hat, hat sowas zu 100% benutzt ^^
      Vllt. weiß er nur nicht wie man es nennt ^^

      Also hier die Lösung :

      Quellcode

      1. $Password = "password"
      Die Variable hier ist

      Quellcode

      1. $Password

      =) ^^
      ich glaube das hat jetzt jeder kapiert ^^
      eine Variable kann man in AutoIT
      mit einem "
      $ " definieren.

      Das wäre dann geritzt.
      ___

      Ein Array ist in Dimensionen Unterteilt.
      Ein Standart Array, so wie es häufig benutz wird, hat nur eine Dimension.
      Man kann es durch folgende Syntax Comands Deklarieren :

      Quellcode

      1. Dim
      2. ReDim
      3. Global
      4. Local
      5. ;etc..

      nach einem solchen Syntax Comand folgt eine normale Variable

      Quellcode

      1. Dim $Array
      und dann folgen die "Dimensionen"
      hier nur eine Dimension :

      Quellcode

      1. Dim $Array[100]
      wenn man dies gemacht hat kann man das Array benutzen.

      Bei einer Normalen Variable kann man nur einen Wert zuweisen.

      Quellcode

      1. $Variable = "Der eine Wert"
      Aber bei einem Array kann man mehrere Werte zuweisen.

      Quellcode

      1. Dim $Array[100]
      2. $Array[0] = "Der erste Wert"
      3. $Array[1] = "Der zweite Wer"
      4. ;...
      5. $Array[99] = "Der 100-teste Wert"
      Wie man hier sieht fange ich bei "0" an und höre bei "99" auf anstatt bei "100", dass ich ja als Dimensonsgröße angeben habe.
      Das liegt daran das, dass array halt bei 0 anfaäng und es dann bis 99 exakt 100.

      Man kann auch mehrere Dimensionen benutzen :

      Quellcode

      1. Dim $2D_Array[[COLOR=DeepSkyBlue]10[/COLOR]][[COLOR=Lime]5[/COLOR]]
      das wäre dann zu vergleichen mit einem Hoch Haus das 10 Stockwerke und jeweils 5 Wohnungen pro Stockwerk hat.

      Quellcode

      1. Dim $2D_Array[10][5]
      2. $2D_Array[1][0] = "Familie Maier"
      3. $2D_Array[1][1] = "Familie Walter"
      4. ;...
      5. $2D_Array[10][4] = "Familie Eisen"
      Es ist wie eine Daten Bank

      Was aber nicht geht ist :

      Quellcode

      1. Dim $2D_Array[10][5]
      2. $2D_Array[1] = "Flur & eingang"
      wenn es mehrer Dimensionen hat, dann muss auch jede einzelne angegebn sein, was ich hier als ersatz empfehlen würde wäre

      Quellcode

      1. Dim $2D_Array[10][5]
      2. $2D_Array[1][0] = "Der Flur"
      dann würde halt Wohnung nr.5 ausfallen ^^, es sei denn man würde den maximal Wert der 2ten Dimension einfach vergrößern ^^

      ich hoffe ihr habt was drauß gelernt

      (C) by Jiyan Akgül

    • Windows Message Codes

      Windows Message Codes

      [FONT="Century Gothic"]

      [SIZE="4"]
      .:: Windows Message Codes ::.
      _______________________________
      [/SIZE]



      Windows Message Codes, abgekürzt WM Codes, sind Codes/Befehle die man , auch mit AutoIT, an Windows Übermitteln kann.
      Damit kann man zum Beispiel den Monitor ausschalten und wieder anschlaten oder nachsehen lassen ob die Maus sich gerade über einem Objekt befindet (Hover) .

      [COLOR="LemonChiffon"]Wie rufe ich die WM Codes auf?[/COLOR]
      In AutoItv3 ist die folgende Funktion enthalten.

      Quellcode

      1. GuiRegisterMsg()


      Damit registriert man einen Code und eine, in String Tags angegebene, Funktion.

      So führt AutoIT diese Funktion aus, wenn der WM Code ausgeführt wird.

      Die WM Codes findet man im Help File.

      Quellcode

      1. AutoIT - > Appendix -> Windows Message Codes


      Und hier : Windows Message Codes

      Im Helpfile und im obrigen genannten Link sieht man 2 Tabellen ( Da alles so eng ist, sieht man es erst wenn man zweimal hinguckt)

      In jeder Tabelle befinden sich jeweils 2 Spalten.
      In der Ersten Spalte steht der Name des WM Comands, von dem man auch auslesen kann wofür er da ist.
      Und in der Zweiten Spalte steht Der Hexadezimale Wert Des Commands.

      Als Include kann man folgende Datei nutzen:

      Quellcode

      1. #include <GuiConstantsEx.au3>


      Aber leider sind nicht alle WM Comands als AutoIT Variable im include gespeichert.
      Man muss also auch mal selber etwas deklarieren, was ja nicht so tragisch ist.

      Ein Beispiel :

      Quellcode

      1. $hGUI = GuiCreate("WM_HSCROLL - Test",500,200)
      2. $hSlider = GUICtrlCreateSlider(50,50,300,50)
      3. GUICtrlSetLimit(-1,10,0)
      4. GUIRegisterMsg($WM_HSCROLL,"Info_Release")
      5. ;; HSCROLL = hScroll = handle Scroll
      6. ;; deDE = Wenn ein Control "gescrollt" wird, wie bei einem Slider zB.
      7. Func Info_Release($hWnd, $iMsg, $iwParam, $ilParam)
      8. ;; Die Parameter dieser Func, sind die, welche GUIRegisterMSG dann aussfüllt.
      9. ;; Jetzt wurde etwas "gescrollt".
      10. ;; Und deswegen diese Funktion abgerufen, da wir sie angegeben hatten.
      11. ToolTip(" Der Slider steht bei : " & GuiCtrlRead($hSlider))
      12. EndFunc
      Alles anzeigen


      Bei dem Code habt ihr bestimmt bei der Func, die 4 Parameter gesehen, die aber gar nicht genutzt wurden.
      Diese Parameter kann man nutzten, sie stehen auch im Helpfile unter dem "GuiRegisterMsg()" - eintrag.

      hWnd - The Window handle of the GUI in which the message appears.
      Msg - The Windows message ID.
      wParam - The first message parameter as hex value.
      lParam - The second message parameter as hex value.


      Falls ihr aber WM Commands ausführt bei dem Daten zurückgegeben werden.
      Dann müsst ihr eine neue Struktur anlegen.
      Dies gelingt euch durch

      Quellcode

      1. DllStructCreate()

      Daten werden mit folgender Funktion eingetragen:

      Quellcode

      1. DllStructSetData()

      Mit dieser folgender Funktione werden sie wieder ausgelesen:

      Quellcode

      1. DllStructGetData()

      Und mit dieser folgender Funktion kann man den Pointer / Zeiger oder auch bekannt als "ptr" bekommen:

      Quellcode

      1. DllStructGetPtr()


      Mehr zur Sache mit den Dll Strukturen findet ihr im Helpfile.
      Und die Strukturen zu den WM Comands bekommt ihr in Google, hauptsächlich in der MSDN libary von Microsoft.

      Manche werdne jetzt denken, dies sei etwas für fortgeschrittene und ein schwer zu bewältigenes Stück Arbeit, aber nein, so ist es nicht.
      Die verwendung von WM Comands gibt euch die Möglichkeit noch mehr dinge zu machen.
      Und das Ziel ist ganz eindach zu erreichen.
      Und fals einer denkt es sei unmöglich, dann irrt er sich gewaltig, denn sonst wäre es ja nicht eingetragen und vorallem :

      Quellcode

      1. [COLOR="DarkOrange"][B]NOTHING IS IMPOSSIBLE[/B][/COLOR]


      Und wenn ihr verzweifeln sollted, dann sucht in den offiziellen Foren nach beispielen zu den WM Commands, dort sind auch sehr viele UDF, an die ihr noch nicht eimal im Traum gekommen wärt, weil ich dachtet das ginge nicht so einfach.


      (C) by Jiyan Akgül
      [/SIZE][/FONT]
    • SQLite

      [FONT="Century Gothic"]
      [SIZE="4"]
      .:: SQLite ::.
      ______________[/SIZE]


      Wenn man sich in AutoIT so etwas wie eine Ressourcen Datei oder auch bekannt als .res File (ressource file) wünscht, dann ist eine DB momentan die beste und einfachste Lösung. (Ohne Server natürlich)

      Und die DB Engine, die im AutoIT Pack als UDF integriert ist, hat eine extrem leichte Handhabung und benötigt keinen Server.

      Man kann DB Dateien erstellen, diese werden dann im angegebenen Pfad erstellt und wenn sie schon existieren, dann werden sie geöffnet und man kann auf sie zugreifen.

      Aber man braucht dazu die SQLite UDF und die SQLite.dll .
      Die mitgegebene UDF enthält bereits alle nötigen Funktionen, und die DLL wird auf Wunsch automatisch erzeugt.

      C-Quellcode

      1. #include <SQLite.au3> ;; Die UDF
      2. #include <SQLite.dll.au3> ;; Die DLL, sie wird automatisch abgespeichert


      Nachdem includen der ganzen Sachen muss die DLL ja geöffnet werden usw.
      Dazu wird folgendes gemacht :

      Quellcode

      1. _SQLite_StartUp()


      Danach öffnen wir eine DB (falls die angegebene Datei nicht existiert wird sie erstellt)

      Quellcode

      1. $hDB = _SQLite_Open("DB.db")

      [COLOR="PaleTurquoise"]Nun wird die Datei "DB.db" im Momentanen Ordner erstellt.
      Man kann das ganze auch ohne eine Datei zu benutzen machen.
      Nur wird dann auch nichts gespeichert.[/COLOR]

      Quellcode

      1. $hDB = _SQLite_Open(":memory:")
      2. ;; oder einfach
      3. $hDB = _SQLite_Open ()

      [COLOR="PaleTurquoise"]Nun nachdem die DB erstellt wurde kann man mithilfe der UDF und der DLL auf sie zugreifen.[/COLOR]

      Als Beispiel erstellen wir mal eine Tabelle :

      Quellcode

      1. _SQLite_Exec ($hDB, "CREATE TABLE Tabelle (Row1,Row2,Row3);")

      [COLOR="PaleTurquoise"]Anstatt "$hDB" kann man auch einfach "-1" verwenden, dabei wird die als letzte geöffnete DB verwendet.[/COLOR]

      Nun wo eine Tabelle existiert kann auch etwas eingetragen werden.

      Quellcode

      1. _SQLite_Exec ($hDB, "INSERT INTO Tabelle (Row1,Row2,Row3) VALUES ('(C)','by','*electriZer*');")

      [COLOR="PaleTurquoise"]_SQLite_Exec() kann man dazu verwenden um neue Daten anzulegen, zum Auslesen wäre _SQLite_Query() vorteilhafter, da bei _SQLite_Exec() keine Rückgabe erfolgt.[/COLOR]

      Damit hätten wir den ersten Eintrag,
      um den wieder auszulesen, damit das ganze auch seinen Sinn hat,
      müssen wir folgendes tun :

      Quellcode

      1. Local $hQuery,$aRow
      2. _SQLite_Query($hDB, "SELECT * From Tabelle",$hQuery)

      [COLOR="PaleTurquoise"]Ihr seht hier schon eine Variable die gar nicht deklariert wird ($hQuery).
      Die Funktion ist so aufgebaut das man nicht alles selber deklarieren muss ($x=0), sondern, dass das die Funktion übernimmt.
      Man gibt den Namen der Variable an und die Funktion speichert die Rückgabe dort hinein.
      Aber damit der Compiler keine Probleme macht, dass $hQuery nicht deklariert sei. Wurde $hQuery hier mit "Local" als eine Local Variable deklariert ("Local" ist auch so etwas wie "Global"). Und $aRow wird für die folgende Funktion benötigt, der Grund der Deklaration ist der gleiche wie bei $hQuery.[/COLOR]

      Weiter gehts, das war nicht alles:

      Quellcode

      1. _SQLite_FetchData ($hQuery, $aRow)
      2. MsgBox(0x40,"[INFO]",$aRow[0]&" "&$aRow[1]&" "&$aRow[2])

      Und schon wird euch in einer MsgBox der Inhalt in der Tabelle angegeben.

      Aber jetzt muss die DB und die DLL noch geschlossen werden.

      Quellcode

      1. _SQLite_Close($hDB)
      2. _SQLite_Shutdown()


      Um noch mehr mit SQLite anzufangen als eine kleine Tabelle mit 3 Spalten zu erstellen und auszulesen, solltet ihr SQL lernen.
      Und wer schon mit MySQL gearbeitet hat kann auch mit SQLite arbeiten.
      (PS : SQLite kann man auch in PHP verwenden)

      Den gesamten Code müsst ihr euch dann mal selber zusammensuchen =)
      Und die SQLite UDF hat noch ein paar Funktionen mehr auf Lager.

      [SIZE="3"](C) by Jiyan Akgül
      Dieses Tutorial ist Urheberrechtlich geschützt,
      das Kopieren ohne Erlaubnis sowie Fälschung des Urheber Namens macht sie Strafbar.[/SIZE][/FONT]
    • Multi Tasking

      Multi Tasking

      [FONT="Century Gothic"]
      [SIZE="4"]
      .:: Multi Tasking ::.
      ___________________[/SIZE]


      Man kann verschiedene schleifen parallel und fast Zeitgleich (es sind nur ein paar Nanosekunden ) laufen lassen.
      Das nennt man "Multi Tasking"
      Ihr werded nur 5 min brauchen und schon seid ihr schlauer ;)

      Die Funktion dazu ist schon in AutoITv3 integriert.

      Quellcode

      1. $counter1= 0
      2. $counter2 = 0
      3. $counter3 = 0
      4. GuiCreate("Multi Tasking",150,100)
      5. $Zeit_1 = GuiCtrlCreateLabel("0",10,5,100,20)
      6. $Zeit_2 = GuiCtrlCreateLabel("0",10,35,100,20)
      7. $Zeit_3 = GuiCtrlCreateLabel("0",10,65,100,20)
      8. AdlibEnable("_counter1",1) ; nonstop durch (jede ms)
      9. AdlibEnable("_counter2",1000) ; in 1sec abschnitten (alle 1000ms)
      10. AdlibEnable("_counter3",60000) ; in 1min abschnitten (jede min)
      11. do
      12. $msg = GuiGetMsg()
      13. until $msg = -3
      14. ; "-3" wird zurückgegeben wenn jemand das Fenster schließen möchte
      15. func _counter1()
      16. $counter1= $counter1+ 1
      17. GuictrlSetData($Zeit_1,$counter1)
      18. endfunc
      19. func _counter2()
      20. $counter2= $counter2+ 1
      21. GuictrlSetData($Zeit_1,$counter2)
      22. endfunc
      23. func _counter3()
      24. $counter3 = $counter3 + 1
      25. GuictrlSetData($Zeit_1,$counter3)
      26. endfunc
      Alles anzeigen
      Erst ausführen/testen und dann source gründlich durchlesen!

      Wer beides gemacht hat, der müsste jetzt bemerkt haben, dass alle 3 parallel laufen.
      Und das noch in verschiedenen Zeitabschnitten.

      Um diese schleife zu beenden kann man einfach

      Quellcode

      1. AdlibDisable()
      benutzen dann werden die Schleifen gestoppt.

      Also AdlibEnable(Func (als String), ZeitAbschnitt)

      Der Zeitabschnitt ist optional, also er muss nicht sein.
      Der standart Wert dafür, welcher dann auch benutzt wird wenn kein wert angegeben wurde, ist "1000 und somit 1000ms.

      Ich hofe es ist verständlich

      (C) by Jiyan Akgül[/FONT]
    • Mit DLL's arbeiten

      Mit DLL's arbeiten

      [FONT="Century Gothic"]

      [SIZE="4"].:: Mit DLL's arbeiten ::.[/SIZE]
      [SIZE="4"]___________________[/SIZE]

      AutoIT wurde für die Verwendung von DLL'S auch angepasst.
      Man kann auch Strukturen erstellen, wie die aus C++/C#/etc..

      Quellcode

      1. // Eine Struktur in C#
      2. public struct Farben
      3. {
      4. public int Rot = 0xFF0000;
      5. public int Blau = 0x00FF00;
      6. public int Grün = 0x0000FF;
      7. }


      Halt nicht so mit den geschweiften Klammern, sondern über eine Funktion und den Inhalt als String.

      Quellcode

      1. $sFarben = "int Rot;int Blau;int Grün;"
      2. $sFarbenStruct = DllStructCreate( $sFarben)

      Damit hätten wir jetzt eine Leere Struct.

      Es gibt noch Funcs mit denen man Daten in Structs eintragen und Auslesen kann und den Pointer einer in AutoIT erstellten Struct ermitteln kann.

      Um eine Dll zu Nutzen kann man sie entweder Manuell öffnen und schließen
      oder das Automatisch erledigen lassen.

      Manuell :

      Quellcode

      1. $DLL = DllOpen("eBox.dll")
      2. $eBox = DllCall($DLL,"none","ptr",$eBoxStruct)
      3. DllClose($DLL)


      Automatisch:

      Quellcode

      1. $eBox = DllCall("eBox.dll","none","Create","ptr",$eBoxStruct_Ptr)


      In meinem Beispiel seht ihr die Funktion DllCall.
      So wird sie angewendet:

      Quellcode

      1. DllDatei oder Handle von DllOpen
      2. Typ des Rückgabewertes - "int" , "char" usw. (wenn keine rückgabe dann "none")
      3. Funktionsname die aufgerufen werden soll
      4. Parameter1 Typ (int,char,ptr,usw.)
      5. Parameter1 Inhalt
      6. usw...


      Bei meiner Funktion steht noch "$eBoxStruct_Ptr"
      und als Typ "ptr".

      Hier der Code Dazu

      Quellcode

      1. ;; ->> [Bearbeitbar] <<- ;;
      2. $sText = "It Works!" ;// Text der Box
      3. $sTitle = "eBox" ;// Titel der Box
      4. $iFlag = 2 ;// 1=none,2=Info,3=Stop,4=Question,5=Warning
      5. ;; ->> [/Bearbeitbar] <<- ;;
      6. $s_eBox = "LPSTR Text; LPSTR Title; int Flag"
      7. $eBoxStruct = DllStructCreate($s_eBox)
      8. DllStructSetData($eBoxStruct,1,$sText)
      9. DllStructSetData($eBoxStruct,2,$sTitle)
      10. DllStructSetData($eBoxStruct,3,$iFlag)
      11. $eBoxStruct_Ptr = DllStructGetPtr($eBoxStruct)
      Alles anzeigen


      _____

      Wenn aber eine DLL einen Pointer zu einer anderen Struct zurückgibt wo Daten eingetragen sind, muss man eine neue ´Struct definieren und dne Pointer angeben.

      Quellcode

      1. $DllCall = DllCall("mydll.dll","ptr","ShowInfo","int",1)
      2. $StructPointer = $DllCall[0]
      3. $s_InfoStruct = "char[] Text; int Type"
      4. $InfoStruct = DllCreateStruct($s_InfoStruct, $StructPointer)


      Somit wäre direkt alles in der Struct Ausgefüllt.
      Nun muss man man es nur noch auslesen.

      Quellcode

      1. $Text = DllStructRead($InfoStruct,1)
      2. $Type = DllStructRead($InfoStruct,2)

      Schon hat man alles.

      Das ist wirklich einfach.

      (C) by Jiyan Akgül[/FONT]
    • [FONT="Comic Sans MS"][COLOR="SandyBrown"][SIZE="2"]Schickes Tut fange jetzt auch mit autoit an habe mir auch nen kleines programm gebastelt das per parameter ausliest was es zu tun hat also nur mit ping und tracert wenn du magst kann ich dir per pm den code schicken und du dir den mal ansehn und bewerten das tut ist aufjeden fall sehr gut :D Bekommst ein thanks
      Nur die schrift solltest du mal ändern da bekommt man ja kopfschmerzen nach einer zeit ;) nix negatives
      [/SIZE][/COLOR][/FONT]