1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. alpines

Beiträge von alpines

  • Kollegen zum Geburtstag gratulieren

    • alpines
    • 28. Dezember 2016 um 10:55
    Zitat von autoiter

    Damit die Exe nie neu gestartet werden muss, sollte aber das IniReadSection auch in die Schleife, nicht wahr?(Ich weiß, war ja nur ein Bsp. ;) )

    So früh am Morgen habe ich keinen klaren Kopf, natürlich muss das in die Schleife. :D
    Habs mal fix editiert. Das #include <Array.au3> kann man sich auch sparen.

  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 28. Dezember 2016 um 10:45
    Zitat von chip

    Ich hoffe doch, dass das jetzt ein Scherz von dir war O.o, alleine schon die zwei nicht nötigen globalen Variablen sind schrecklich. Wie cape-city schon angemerkt hat wird er ohne Kommentare da in einem halben Jahr nicht mehr wissen was er gemacht hat. Wenn das für dich "ganz gut aussieht", dann muss ich meinen bisherigen Eindruck von dir wirklich sehr stark absenken :D

    Das war auf die Funktionalität bezogen und die ist doch in Ordnung oder?

    Es gibt immer Luft nach oben und SCCSSF wird selber entscheiden müssen ob er da durchblickt oder nicht.
    Ich persönlich hätte das ganze anders aufgezäumt da ich jetzt schon nicht mehr verstehe was da abgeht.

    Alleine bei den Funktionsnamen _verschieben_aelter() und _Umbennen() kräuseln sich mir die Zehennägel.

  • Kollegen zum Geburtstag gratulieren

    • alpines
    • 28. Dezember 2016 um 10:41

    Du kannst das auch per IniRead machen, wenn du dazu die richtigen Ini-Funktionen nimmst, musst du die Exe nie neustarten sondern nur die Ini anpassen.
    Hier mal ein Beispiel wie du das machen kannst.

    AutoIt
    While Sleep(50 * 1000)
    	$aGeburtstage = IniReadSection("Geburtstage.ini", "Geburtstage")
    
    
    	For $i = 1 To $aGeburtstage[0][0]
    		$aDate = StringSplit($aGeburtstage[$i][1], " ", 3)
    
    
    		$aTime = $aDate[1]
    		$aDate = StringSplit($aDate[0], ".", 3)
    
    
    		$aTime = StringSplit($aTime, ":", 3)
    
    
    		If @MDAY = $aDate[0] and @MON = $aDate[1] and @HOUR = $aTime[0] and @MIN = $aTime[1] Then
    			MsgBox(48, "Alles Gute!", "Herzlichen Glückwunsch zum Geburtstag " & $aGeburtstage[$i][0] & "!")
    		EndIf
    	Next
    WEnd
    Alles anzeigen
    Code
    [Geburtstage]
    Andreas=25.12 12:53
    Kloppstock=28.12 10:40
  • Von Prozess auf einen Anderen Prozess zugreifen

    • alpines
    • 28. Dezember 2016 um 09:30
    Zitat von assaziel

    Mit der FileInUse Funktion zuarbeiten wäre nicht das Problem da direkt nach dem schreiben das File wieder geschlossen wird.

    Dann setz ich mal den grünen Haken für [gelöst] (1. Beitrag bearbeiten).
    Solltest du nach deiner Meditation einen besseren Weg im Sinn haben diskutieren wir gerne darüber weiter, aber das scheint der einfachste Weg zu sein.

  • Kollegen zum Geburtstag gratulieren

    • alpines
    • 28. Dezember 2016 um 09:27

    Willst du die Grüße über Mail verschicken oder die Datei auf dem PC ausführen und es als MsgBox anzeigen lassen?

    Bei der MsgBox legst du am besten ein Array an mit den Daten an und iterierst es einfach jede Minute/jeden Tag.
    Ich hab mal ein kleines Beispiel programmiert, kannst es dir ja mal ansehen.

    AutoIt
    Local $aGeburtstage[2][2] = [["Andreas", "28.12 09:26"], ["Kloppstock", "31.12 00:16"]]
    
    
    While Sleep(50 * 1000)
    	For $i = 0 To UBound($aGeburtstage) - 1
    		$aDate = StringSplit($aGeburtstage[$i][1], " ", 3)
    
    
    		$aTime = $aDate[1]
    		$aDate = StringSplit($aDate[0], ".", 3)
    
    
    		$aTime = StringSplit($aTime, ":", 3)
    
    
    		If @MDAY = $aDate[0] and @MON = $aDate[1] and @HOUR = $aTime[0] and @MIN = $aTime[1] Then
    			MsgBox(48, "Alles Gute!", "Herzlichen Glückwunsch zum Geburtstag " & $aGeburtstage[$i][0] & "!")
    		EndIf
    	Next
    WEnd
    Alles anzeigen
  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 27. Dezember 2016 um 21:30

    Schaut doch soweit ganz in Ordnung aus.

    Allerdings weiß ich nicht wie sehr du auf die Konventionen der Variablennennung achtest, denn du schreibst z.B. $iAUFRAEUMEN_STUNDE und das ist im normalen Fall eine Konstante.
    Du könntest den Code eventuell noch bisschen besser formatieren, ansonsten schaut das eigentlich ganz gut aus.

  • Von Prozess auf einen Anderen Prozess zugreifen

    • alpines
    • 27. Dezember 2016 um 19:39

    Da gibt es verschiedene Wege.

    Bei deiner MsgBox würde die Scriptausführung um etwa 10 Sekunden verzögert werden aber du solltest das lieber mit Flags machen die signalisieren ob die Datei gerade in Verwendung ist oder nicht.

    Du kannst dazu eine UDF verwenden mit der du Variablen zwischen zwei Prozessen austauschen kannst (Interprozesskommunikation) oder du machst das z.B. mit der Datei wie du es gesagt hast.

    Andererseits kannst du auch prüfen ob ein Handle zu der Datei existiert und somit geöffnet ist, dazu bietet sich die Funktion _FileInUse($sFileName) an.
    Wenn diese eine 1 returnt, dann ist deine Datei gerade in Benutzung und du verweigerst den Zugriff für den User bis da eine 0 kommt.

    AutoIt
    Func _FileInUse($sFilename)
        Local $aRet, $hFile
        $aRet = DllCall("Kernel32.dll", "hwnd", "CreateFile", _
                                        "str", $sFilename, _ ;lpFileName
                                        "dword", 0x80000000, _ ;dwDesiredAccess = GENERIC_READ
                                        "dword", 0, _ ;dwShareMode = DO NOT SHARE
                                        "dword", 0, _ ;lpSecurityAttributes = NULL
                                        "dword", 3, _ ;dwCreationDisposition = OPEN_EXISTING
                                        "dword", 128, _ ;dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL
                                        "hwnd", 0) ;hTemplateFile = NULL
        $hFile = $aRet[0]
        If $hFile = -1 Then ;INVALID_HANDLE_VALUE = -1
            $aRet = DllCall("Kernel32.dll", "int", "GetLastError")
            SetError($aRet[0])
            Return 1
        Else
            ;close file handle
            DllCall("Kernel32.dll", "int", "CloseHandle", "hwnd", $hFile)
            Return 0
        EndIf
    EndFunc
    Alles anzeigen
  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 27. Dezember 2016 um 11:29
    Zitat von chip

    Für so etwas gibt es die Aufgabenplanung in Windows. Ist eigentlich komplett sinnfrei und auch ineffizient das nochmal separat nachzubauen.

    Naja, weiß nicht ob das jetzt wirklich sinnfrei ist sich in die Aufgabenplanung reinzufuchsen um alles richtig nachzubauen (Funktionen müssen ja blockierend sein etc).

  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 24. Dezember 2016 um 17:40
    Zitat von autoiter

    Im Grunde ja, @alpines,
    aber es würde imho besser aussehen als die aktuelle Umsetzung und es würde einen einheitlichen Stil für alle Funktionsaufrufe ermöglichen.

    Meiner Meinung nach ist das schon in Ordnung so, das Problem mit den Timern wäre der If-Zweig mit _PDFMerge() dort will man alle 100 Sekunden das ausführen.
    Nun ich weiß nicht wie lange die Funktion dafür braucht aber wenn man das mit Timern macht dann muss man dafür automatisch einen Zähler dazunehmen, der Grund dafür ist folgender:

    In diesem Fall resette ich den Timer nur wenn ich über die 1200 Sekunden drüber bin und nicht wenn ich alle 100 Sekunden _PDFMerge() ausführen möchte.
    Das Problem ist nun, das _PDFMerge eine sehr schneller oder sehr kurze Funktion sein kann, und wenn ich die CPU-Last des Programms minimieren möchte und in die While-Schleife ein Sleep(10) reinpacke, dann laufe ich Gefahr das ich niemals Mod(TimerDiff($tmr), 1200 * 1000) = 0 zu erfüllen.

    Also muss ich das so machen das er _PDFMerge() ausführt wenn die Mod-Bedingung = 0 oder kleiner als eine bestimmte Toleranz ist (siehst du gleich am Beispiel.)
    Damit man sich nicht damit rumärgern muss, kann man nun eine Zählervariable einführen (in meinem Beispiel $iPassed).

    Hier hast du mal das Beispiel das die Implementation als Timer zeigt (einmal mit Zählervariable und einmal mit der Toleranzbedingung)

    AutoIt
    $iPassed = 0
    $tmr = TimerInit()
    
    
    While Sleep(10)
    	If TimerDiff($tmr) >= $iPassed * 2 * 1000 Then
    		ConsoleWrite("Counter Passed! :)" & @CRLF)
    		$iPassed += 1
    	EndIf
    
    
    	If Mod(TimerDiff($tmr), 2 * 1000) < 5 Then
    		ConsoleWrite("Modulo Passed! :)" & @CRLF)
    	EndIf
    WEnd
    Alles anzeigen

    Wenn du das Script ausführst wirst du merken, das das Sleep(10) in der Schleife die Modulobedingung behindert.
    Der String "Counter Passed!" wird alle zwei Sekunden in die Console geschrieben aber der String "Modulo Passed!" wird manchmal ausgelassen.

    Du hast nun folgende Möglichkeiten um das Problem zu beseitigen, einmal kannst du das Sleep(10) weglassen, dann würde aber der Modulo Passed Zweig sehr häufig ausgeführt werden,
    oder du passt die < 5 in der If-Abfrage an. Wenn du nun die 5 auf 10 oder höher setzt, dann läufst du ebenfalls Gefahr die Funktion mehrmals auszuführen.

    Deshalb brauchst du hier noch die Extrazählervariable $iPassed, und wenn die Funktionen von @SCCSSF implementierst (einmal als $iWhile += 1 und einmal als Timer) dann wirst du merken, dass man sich die Timer auch ehrlich gesagt schenken kann, weil man auch noch den Zähler zurücksetzen muss. (meine Meinung).

    AutoIt
    ;While-Implementation
    
    
    While Sleep(3 * 1000)
    	_Datenbekommen()
    	_Verschieben()
    	_Umbennen()
    
    
    	If Mod ($iwhile, 1200) = 0 Then
    		_aelter_loeschen()
    		_verschieben_aelter()
    		$iwhile = 0
    	ElseIf Mod ($iwhile,100) = 0 Then
    		_PDFMerge()
    	EndIf
    
    
    	$iwhile +=1
    WEnd
    Alles anzeigen
    AutoIt
    ;Timer-Implementation mit Zählervariable
    
    
    $tmr = TimerInit()
    $iPassed = 1
    
    
    While Sleep(10)
    	_Datenbekommen()
    	_Verschieben()
    	_Umbennen()
    
    
    	If TimerDiff($tmr) >= 1200 * 1000 Then
    		_aelter_loeschen()
    		_verschieben_aelter()
    		$tmr = TimerInit()
    		$iPassed = 1
    	ElseIf TimerDiff($tmr) >= $iPassed * 100 * 1000 Then
    		$iPassed += 1
    		_PDFMerge()
    	EndIf
    WEnd
    Alles anzeigen


    Frohes Fest ;)

  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 24. Dezember 2016 um 16:10
    Zitat von Kanashius

    Nur mal so als Idee in den Raum geworfen:
    TimerInit()
    TimerDiff()

    Wofür gibt es die beiden Funktionen denn, wenn nicht dafür :D

    Kann man einfach den Zeitabstandprüfen und den Timer einfach jedesmal neu initialisieren^^

    Kommt bei SCCSSFs Implementation letzlich auf das Gleiche hinaus ob ich nun einen Timer resette oder die Zählervariable.

  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 24. Dezember 2016 um 13:57
    Zitat von autoiter

    Wenn etwas einmal die Stunde oder alle x Stunden ausgeführt werden soll, könntest du es auch etwas schräger machen.
    Das folgende ist bestimmt Pfusch und irgendwer, der das liest, wird wohl seinen Kopf auf die Tischplatte hauen. Aber es ist ja Weihnachten :D

    Aber... aber warum? :D

    Wenn du es noch schräger haben willst kannst du ja ein PHP-Script schreiben das auf einem Webserver läuft wo das Script auf dem Clienten alle 5 Sekunden die Infos runterlädt ob er die Funktionen ausführen soll oder nicht :D

  • Funktion in der While Schleife nur alle x mal Starten

    • alpines
    • 24. Dezember 2016 um 12:38
    Zitat von SCCSSF

    So habe mal etwas rum gespielt.

    Will das bestimmte Funktionen alle 3 sek andere 1 x in der Stunde andere alle 5 Minuten.

    oder kann man den Zähler durchlaufen lassen ? Gibt es dort Probleme bei 7/24 Betrieb?

    Warum kein AdlibRegister für die Funktionen? Dann sparst du auch dir die Zählervariable. Du brauchst dann nur eine Standard While-Sleep(100)-WEnd-Schleife.
    Weiß jetzt nicht ob deine Funktionen blockierend sind oder parallel laufen dürfen.

  • Scite für Autoit

    • alpines
    • 24. Dezember 2016 um 10:34

    Super, dass wir dir helfen konnten. Ich hab mal den grünen Haken gesetzt (Präfix = [gelöst], 1. Beitrag bearbeiten).

  • Stundenplaner

    • alpines
    • 24. Dezember 2016 um 00:53
    Zitat von Cape-City

    schon krass das ich immer wieder kleinere Bugs finde

    Programmieren ohne Bugs wäre nur halb so spaßig :D

  • Warum zeigt VirusTotal meine .EXE als Virus an

    • alpines
    • 22. Dezember 2016 um 18:42
    Zitat von chip

    Weil es mit Autoit geschrieben ist.

    Joa, das trifft den Nagel fast auf den Kopf.

    Allerdings kommen da noch andere Faktoren hinzu. Compile deine EXE mal mit "Compile with Options" (Rechtsklick auf das Script) und nimm dann den Haken bei Use UPX raus.
    UPX ist ein Exe-Packer und der wird von den meisten AV Systemen als False-Positive erkannt.

  • Richtig mit FTP/SQL verbinden?

    • alpines
    • 22. Dezember 2016 um 10:30
    Zitat von xSunLighTx3

    Benötigt der Nutzer der das Skript dann ausführt, nicht Mozilla Firefox?
    Wahrscheinlich haben viele den Browser nicht.
    (Edit: Hab gelesen, dass diese Anfrage einfach an den Server gesendet wird. Also da
    das mein Server ist, kann mir das ja egal sein, welcher Browser das ist. :P)
    Danke für die Hilfe!

    Das ist der sogenannte User-Agent. Der gibt an um welchen Browser es sich beim Clienten handelt.
    Du kannst das Feld auch frei lassen, oder einen User-Agent von Google Chrome oder dem Internet Explorer nehmen. Spielt absolut keine Rolle solange er relativ aktuell ist.

  • Stundenplaner

    • alpines
    • 22. Dezember 2016 um 01:32
    Zitat von Cape-City

    Das mit den Variablennamen $aTag oder $iDay habe ich allerdings noch nicht zu ganz verstanden, warum man das macht, bzw. was es einem
    damit erleichtert.

    Ganz einfach, wenn man sich mal das aktuelle Scope ansieht und sich alle Variablen betrachtet die es so gibt, dann sollte der Name der Variable einen Titel tragen der aussagekräftig ist und direkt Einblick bietet wofür die Variable genutzt wird. Wir haben schließlich nicht 5 Variablen sondern dutzende, wenn nicht sogar hunderte.

    Bei $Tag habe ich (meine persönliche Meinung) absolut keine Ahnung was das sein soll. Ist da ein String gespeichert? Ist das ein Array? Ist das der Wochentag als Index?
    Aus diesem Grund verwendet man die sogenannte ungarische Notation. Aus $Tag wird ein $aTag und schon weiß ich etwas mehr über die Variable.
    Jetzt kann ich auf Anhieb sehen das es sich um ein Array handelt also kann ich beim scripten nicht auf die Idee kommen das Array als Standardvariable zu verwenden.

    Bei $iDay wird das ganze noch besser.
    $Day selbst sagt mir nur das es sich um einen Tag handeln muss, aber wie bei dem Array zuvor habe ich absolut keine Kenntnis (zumindest als fremder Leser) was in der Variable enthalten ist.
    Ich muss erstmal ein wenig hochscrollen um zu sehen das es eine Zählervariable für eine For-Schleife ist, also warum packe ich nicht direkt ein i(nteger) davor?
    Wenn ich mir jetzt $iDay angucke sehe ich auf direkt das die Variable einen Integer hält der einen Tag spezifiziert. Ich kann also davon ausgehen, dass $iDay einen Wert von 0 bis 6 bzw. 1 bis 7 hat.

    Man kann das ganze natürlich noch auf die Spitze treiben und sowas schreiben $as_Tag (Array String, Tag) aber das ist dann geschmackssache und variiert von Coder zu Coder.


    Letzendlich ist es deine Entscheidung wie du deinen Code schreiben möchtest. Ich kann dir nur empfehlen dich an solche Konventionen zu halten, da es das Arbeiten in größeren Projekten enorm erleichtert und man nicht sinnlos Debuggen muss weil man ein Array wie einen String handhabt.
    Das mit dem Code auseinanderziehen ist mein persönlicher Stil, ich finde das lockert das schön auf und man kann das einfacher lesen.
    Das soll widerum nicht heißen, dass man jede zweite Zeile freilässt sondern seinen Code sinnvoll in Absätze gliedert.

    Nebenbei, wenn dein Code im Post nicht richtig angezeigt wird, dann nimm die <Code-Tags> und wähle AutoIt aus (falls du das nicht gemacht hast)!

  • Computer-Info

    • alpines
    • 21. Dezember 2016 um 18:46
    Zitat von Oscar

    - Monitor:

    Ist eine üble Baustelle, weil das je nach Windows-Version, nicht immer an der gleichen Stelle zu finden ist und auch nicht immer die gleichen Informationen.

    Wenn du die Zeit hast kannst du in einer virtuellen Maschine ja die verschiedenen Systeme aufsetzen und einfach nach OS prüfen.

    Kannst mir aber gerne das Testscript zukommen lassen wie du meinst (Windows 7 Home Premium 64-Bit).

  • Stundenplaner

    • alpines
    • 21. Dezember 2016 um 18:29
    Zitat von Cape-City

    Nettes Programm, sicherlich sehr hilfreich wenn meine Jungs in die Schule kommen.

    Ich habe es mal etwas umgestrickt, verschlankt, verbessert, verändert... :party:

    Hauptänderungen (und sicherlich nicht die Letzte :Face: ) :

    - Abfrage beim Start ob eine INI geöffnet werden soll oder man neu beginnen möchte
    - 1D und 2D Arrays für den GUI Aufbau, die OnEvent Aktionen und das wieder in die INI schreiben
    - GUI wird nicht ständig neugeladen, sondern nur nach einem Event
    - die Haupt-Schleife besteht nur noch aus einem Sleep (500) :)
    - Diverse Optische Veränderungen (z.B. werden die Texte jetzt X/Y Centered im Label angezeigt)
    - Default Werte auf den OnEvent Flächen
    - Stundenplanname wird per Default aus dem Dateinamen extrahiert (kann aber immer noch nachträglich verändert werden)
    - Werte verschwinden nicht, wenn man die Abfragebox abbricht
    - geöffnete INI Datei wird unten in der GUI angezeigt

    Alles anzeigen


    Schön, dass du dir die Mühe gemacht hast! Jetzt wird es Zeit für Kritik! :D

    Konventionen bei Variablennennungen sind gerne gesehen.
    $TagStunde[$Day][$Hour] ließt sich irgendwie komisch und gibt keine gute Auskunft über den Inhalt und die Typen des Inhaltes an. Besser wäre da $aTagStunde[$iDay][$iHour].

    An einigen Stellen kannst du das Switchen auch sein lassen, weil du ja nur einen Case abfragst.

    Also statt:

    AutoIt
    Switch @GUI_CtrlId
    	Case $TagStunde[$Day][$Hour]
    		;...
    EndSwitch

    lieber gleich:

    AutoIt
    If @GUI_CtrlId = $TagStunde[$Day][$Hour] Then
    	;...
    EndIf

    Die Sache mit $MenuItem11 will ich gar nicht erst ansprechen, denn ich denke du siehst was daran blöd ist :D

    Außerdem wäre es glaube ich eine super Anwendungsmöglichkeit für Enums gewesen (Local Enum $iMontag = 1, $iDienstag, $iMittwoch, ...)

    Zu guter Letzt solltest du den Code noch ein wenig auflockern, wenn man alles untereinanderschreibt dann findet man sich nach langer Zeit nicht mehr so gut ein.
    Das ist wie beim Brief tippen, Sätze die zusammengehören bilden einen Absatz und so sollte es bei Funktionen sein.

    Also statt

    AutoIt
    $MenuItem10 = GUICtrlCreateMenu ("&Datei")
    $MenuItem11 = GUICtrlCreateMenuItem ("Neu", $MenuItem10)
    $MenuItem12 = GUICtrlCreateMenuItem ("Öffnen", $MenuItem10)
    $MenuItem13 = GUICtrlCreateMenuItem ("Beenden", $MenuItem10)
    $MenuItem20 = GUICtrlCreateMenu ("&?")
    $MenuItem21 = GUICtrlCreateMenuItem ("Über", $MenuItem20)
    $MenuItem22 = GUICtrlCreateMenuItem ("Hilfe", $MenuItem20)
    GuiSetonEvent ($GUI_EVENT_CLOSE, "_GUI_GetMsg")
    GuiCtrlSetonEvent ($MenuItem11, "Save")
    GuiCtrlSetonEvent ($MenuItem12, "Load")
    GuiCtrlSetonEvent ($MenuItem13, "Cancel")
    GuiCtrlSetonEvent ($MenuItem21, "About")
    GuiCtrlSetonEvent ($MenuItem22, "Help")
    Alles anzeigen

    lieber:

    AutoIt
    $MenuItem10 = GUICtrlCreateMenu ("&Datei")
    
    
    $MenuItem11 = GUICtrlCreateMenuItem ("Neu", $MenuItem10)
    GuiCtrlSetOnEvent(-1, "Save")
    
    
    $MenuItem12 = GUICtrlCreateMenuItem ("Öffnen", $MenuItem10)
    GuiCtrlSetPnEvent (-1, "Load")
    
    
    $MenuItem13 = GUICtrlCreateMenuItem ("Beenden", $MenuItem10)
    GuiCtrlSetPnEvent (-1, "Cancel")
    
    
    
    
    $MenuItem20 = GUICtrlCreateMenu ("&?")
    
    
    $MenuItem21 = GUICtrlCreateMenuItem ("Über", $MenuItem20)
    GuiCtrlSetonEvent(-1, "About")
    
    
    $MenuItem22 = GUICtrlCreateMenuItem ("Hilfe", $MenuItem20)
    GuiCtrlSetPnEvent(-1, "Help")
    
    
    GuiSetOnEvent ($GUI_EVENT_CLOSE, "_GUI_GetMsg")
    Alles anzeigen
  • Stundenplaner

    • alpines
    • 21. Dezember 2016 um 10:48
    Zitat von JackSlater

    Danke, ich setz mich vielleicht mal die Tage dran um das ein wenig zu verschönern.

    Na das hört man doch gerne.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™