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. Oscar

Beiträge von Oscar

  • _ArraySort2D_MC 2D Array nach mehreren Spalten sortieren (Stand 08.08.2012)

    • Oscar
    • 27. Februar 2010 um 20:52

    Die Idee alle Spalten in einen String umzuwandeln und dann erst zu sortieren ist ja genial. :thumbup:
    Wobei ich erst nicht gedacht hätte, dass das geschwindigkeitsmäßig etwas bringt, aber weit gefehlt. Die Laufzeit ist wirklich gut.
    Werde ich mir mal archivieren. Gut gemacht! :thumbup:

  • TSAdress (Adressverwaltung)

    • Oscar
    • 27. Februar 2010 um 20:33

    Bakku: Die Radios sind dazu da, auszuwählen welche der Telefonnummern in der Liste angezeigt werden soll. Es können ja vier Telefonnummern eingegeben werden, aber nur eine steht in der Liste. Und "Minimiert starten" kann man im Menü "Einstellungen" ausschalten.

    Alina: Jo stimmt, das ist noch ein Bug. Wird in der nächsten Version behoben.

  • TSAdress (Adressverwaltung)

    • Oscar
    • 27. Februar 2010 um 04:44

    Version 1.5 (21.03.2010)

    Ja ich weiß, es gibt schon hunderte solcher Programme, aber keines gefiel mir bisher. Also habe ich mein eigenes Programm geschrieben. ^^
    Es sollte vor allem klein sein, im Hintergrund laufen (Tray-Icon) und somit schnell verfügbar sein. Außerdem sollte es eine Liste geben, in der nur Name, Vorname und die Telefonnummer aufgelistet sind.
    All das kann mein Programm.
    Außerdem:
    - Windows-Autostart (optional, nur bei der compilierten Exe)
    - Minimiert starten (optional)
    - bei Programmende das Adressbuch speichern (optional)
    - Einträge nachträglich bearbeiten (Doppelklick auf einen Eintrag in der Liste)
    - Suche (einfach den Suchbegriff eingeben, Treffer wird in der Liste markiert)
    - Doppelklick aufs Trayicon minimiert das Fenster bzw. stellt es wieder her.

    History


    Änderungen in Version 1.5:
    - Wenn man das "Bearbeiten"-Fenster minimiert hat, blieb es "verschwunden", bis man das Hauptfenster minimiert und wiederhergestellt hat. Fehler behoben!
    - Wenn bei einem Anruf die Rufnummer nicht übermittelt wurde, hat mein Programm den ersten Eintrag im Listview als Anrufer angezeigt. Fehler behoben!
    - Bei Änderungen an bestehenden oder dem anlegen von neuen Einträgen wird man nun deutlich (Ausrufezeichen-Icon) darauf hingewiesen, dass das Adressbuch noch nicht gespeichert ist.

    Änderungen in Version 1.4:
    - Der FritzBox-Anrufmonitor kann nun im Menü (unter Einstellungen) ein-/ausgeschaltet werden. Dabei wird die IP-Adresse automatisch ermittelt (TCPNameToIP).
    Der TCP-Port ist nun fest auf 1012 eingestellt. Nach Recherchen im Netz habe ich herausbekommen, dass dieser Port immer für den internen Anrufmonitor verwendet wird.
    Falls TSAdress keine Verbindung zur FritzBox herstellen kann, könnte es sein, dass der Port erst freigeschaltet werden muss (Anleitung dazu unter Menü/Hilfe).
    - Die Rufnummern-Erkennung sollte jetzt auch bei unterschiedlichen Eingabeformaten funktionieren.
    - Das ListView hat nun ein Raster ($LVS_EX_GRIDLINES)
    - Außerdem habe ich die Standardfarben etwas weniger "grell" voreingestellt. ^^

    Änderungen in Version 1.3:
    - FritzBox-Support (Alpha!) Wenn ein Anruf eingeht, erscheint ein TrayTip mit dem Anrufernamen (wenn bekannt) und der Telefonnummer (wenn übermittelt) des Anrufenden.
    Dazu müssen in der Inidatei diese drei Einträge vorhanden sein:

    Code
    FritzBoxExists=True
    FritzBoxIP=192.168.178.1
    FritzBoxPort=1012


    Der Port passt so bei einer "FritzBox 7170" und die IP ist standardmäßig so vorgegeben. Falls eure FritzBox eine andere IP besitzt, dann diese dort eintragen.
    Ich habe keine Ahnung, ob das auch mit anderen FritzBoxen funktioniert, also ohne jegliche Gewähr. Bei meiner 7170 klappt das aber einwandfrei (getestet). :)
    - Die Hotkeys habe ich geändert auf [ALT]+[ n ] für "Neuer Eintrag", [ALT] + [ b ] für "Eintrag bearbeiten" und [ALT] + [ l ] für "Markierte Einträge löschen". Das kollidierte sonst mit der Eingabe im Suchfeld.

    Änderungen in Version 1.2:
    - Wenn die Maus länger als 500 Millisekunden über einen Eintrag in der Liste steht, dann wird ein Tooltip mit Kurzinformationen angezeigt.
    - Kontextmenü zum Listview hinzugefügt
    - Es gibt nun drei Hotkeys: "N" für "Neuer Eintrag", "b" für "Eintrag bearbeiten" und "l" für "Markierte Einträge löschen"
    - Die Farben im Listview können nun selbst gewählt werden, indem die Werte (1stColor und 2ndColor) in der Inidatei angepasst werden. Sind die Werte unterschiedlich, werden die Zeilen wechselweise farblich angepasst.

    Änderungen in Version 1.1:
    - Bug beim Datumsupdate behoben (Danke Alina)
    - Wenn man alle Einträge gelöscht hat und dann wieder einen Neuen angelegt hat, ist das Programm abgestürzt. Behoben!
    - Man kann nun ein Backup des Adressbuches erstellen (Pfad auswählbar)
    - Backup laden
    - Im Menü "Einstellungen" gibt es jetzt die Möglichkeit die Daten und Einstellungen im Programmverzeichnis speichern zu lassen (Mobile-Version). Man kann das Programm dann einfach auf einem USB-Stick mitnehmen.

    Screenshot:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Hinweis: Die Namen und Telefonnummern sind zufällig erstellt. Jede Ähnlichkeit mit lebenden und so weiter... :D

    Script, Icon und Exe befinden sich im ZIP-Archiv (Anhang)!

    Dateien

    TSAdress_v15.zip 611,12 kB – 451 Downloads TSAdress_Screenshot.png 34,26 kB – 0 Downloads
  • _ArraySort sortiert "komisch"

    • Oscar
    • 26. Februar 2010 um 18:46

    So, nachdem mir UEZ in der Shoutbox die Gehirnwindungen entknotet hat, konnte ich das Script von ihm in eine Funktion zusammenfassen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $max = 999
    Dim $array[$max][3]
    for $i = 0 to $max - 1
    $array[$i][0]= Chr(Random(65,67,1)) & Chr(Random(65,67,1)) & Chr(Random(65,67,1))
    $array[$i][1]= Chr(Random(65,67,1)) & Chr(Random(65,67,1)) & Chr(Random(65,67,1))
    $array[$i][2]= Chr(Random(65,90,1)) & Chr(Random(65,90,1)) & Chr(Random(65,90,1))
    Next
    _ArrayDisplay($array, 'Vorher:')
    _NewArraySort($array, 0, 1)
    _ArrayDisplay($array, 'Nachher:')

    [/autoit] [autoit][/autoit] [autoit]

    Func _NewArraySort(ByRef $aSort, $1st, $2nd)
    Local $j = 0, $k = 1
    _ArraySort($aSort, 0, 0, 0, $1st)
    While $k < UBound($aSort)
    If $aSort[$j][$1st] <> $aSort[$k][$1st] Then
    If $k - $j > 1 Then
    _ArraySort($aSort, 0, $j, $k - 1, $2nd)
    $j = $k
    Else
    $j = $k
    EndIf
    EndIf
    $k += 1
    WEnd
    If $k - $j > 1 Then _ArraySort($aSort, 0, $j, $k, $2nd)
    EndFunc

    [/autoit]


    Das ist schön schnell und sortiert richtig. Danke UEZ und nochmal ein Danke an alle anderen.
    Mein Projekt steht nun kurz vor der Fertigstellung. :)

  • GUICtrlCreateButton auf bestimmte GUI

    • Oscar
    • 26. Februar 2010 um 17:25

    Schau Dir mal das Beispiel zu GUISwitch an. So geht's ohne UDF. :)

  • _ArraySort sortiert "komisch"

    • Oscar
    • 26. Februar 2010 um 17:20

    Schnitzel: Ich bin Dir ja dankbar, dass Du Dich an dem Problem versuchst und Deine Funktion ist auch recht schnell, nur passt es noch nicht so ganz.
    Ich habe Dein Beispiel mal etwas verändert, um es genauer zu zeigen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $max = 500
    Dim $array[$max][3]
    for $i = 0 to $max - 1
    $array[$i][0]= Chr(Random(65,67,1)) & Chr(Random(65,67,1)) & Chr(Random(65,67,1))
    $array[$i][1]= Chr(Random(65,67,1)) & Chr(Random(65,67,1)) & Chr(Random(65,67,1))
    $array[$i][2]= Chr(Random(65,90,1)) & Chr(Random(65,90,1)) & Chr(Random(65,90,1))
    Next
    _ArrayDisplay($array, 'Vorher:')

    [/autoit] [autoit][/autoit] [autoit]

    _Array2D_Sort($array, 0)
    _ArrayDisplay($array, 'Nachher:')

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _Array2D_Sort($array, 1)
    ;~ _ArrayDisplay($array)

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _Array2D_Sort
    ; Description ...: Sorts a 2D Array by Index
    ; Syntax.........: _Array2D_Sort($avArray[, $iIndex = 0])
    ; Parameters ....: $avArray - Array to display
    ; $iIndex - [optional] Sort Array by this Index
    ; Return values .: Success - Sorted Array
    ; Failure - 0, sets @error:
    ; |1 - $avArray is not an Array
    ; |2 - $avArray is not an 2D-Array
    ; |3 - $iIndex is out of
    ; Author ........: Schnitzel
    ; Modified.......:
    ; Link ..........: https://autoit.de/index.php?page=Thread&threadID=18117
    ; Example .......: Yes
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _Array2D_Sort(ByRef $avArray, $iIndex = 0)
    If Not IsArray($avArray) Then Return SetError(1, 0, 0)
    If Not UBound($avArray, 0) = 2 Then Return SetError(2, 0, 0)
    If UBound($avArray, 2) <= $iIndex Then Return SetError(3, 0, 0)
    Local $bTausch, $sTmp, $i = 0, $iRuns = UBound($avArray) - 2
    Do
    $bTausch = False
    For $j = 0 To $iRuns - $i
    If $avArray[$j][$iIndex] > $avArray[$j + 1][$iIndex] Then
    For $k = 0 To UBound($avArray, 2) - 1
    $sTmp = $avArray[$j + 1][$k]
    $avArray[$j + 1][$k] = $avArray[$j][$k]
    $avArray[$j][$k] = $sTmp
    Next
    $bTausch = True
    EndIf
    Next
    $i += 1
    Until ($bTausch = False) Or ($i = $iRuns)
    If ($bTausch = False) And ($i = 1) Then _Array2D_Sort($avArray, $iIndex + 1)
    EndFunc ;==>_Array2D_Sort

    [/autoit]


    Mal ganz ohne Zahlen (sind später eh keine Zahlen, sondern Strings). Wenn nun die Buchstabenfolge in der ersten Spalte gleich ist, dann müssen diese Gleichen nach den Buchstaben aus der zweiten Spalte sortiert werden. Nach der dritten Spalte braucht nicht sortiert werden. Diese soll nur anzeigen, dass das 2D-Array noch weitere Spalten besitzt und man diese mitsortieren muss.
    Eine Zeile mit allen Spalten bildet einen Datensatz. Diese dürfen auch nicht auseinandergerissen werden (Hinweis an kleiner27).

  • Warten auf Informationen

    • Oscar
    • 25. Februar 2010 um 20:46

    Dateien schreiben/lesen ist die wohl schlechteste Variante. ^^

    Am leichtesten zu verstehen ist wohl die Version mit einem versteckten Edit-Control:
    Programm1:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate('Programm1')
    $HiddenInput = GUICtrlCreateEdit('', 0, 0, 0, 0)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    $sExtMsg = GUICtrlRead($HiddenInput)
    If $sExtMsg <> '' Then
    MsgBox(0, 'Nachricht', $sExtMsg)
    GUICtrlSetData($HiddenInput, '')
    EndIf
    WEnd

    [/autoit]

    Programm2:

    Spoiler anzeigen
    [autoit]


    While True
    $input = InputBox('Programm2', 'Text zum senden eingeben', '')
    If $input = '' Then Exit
    ControlSetText('Programm1', '', '[CLASS:Edit; INSTANCE:1]', $input)
    Sleep(50)
    WEnd

    [/autoit]
  • _ArraySort sortiert "komisch"

    • Oscar
    • 25. Februar 2010 um 20:13

    Ich habe Dein Beispiel mal ein wenig angepasst, um die Problematik zu verdeutlichen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Dim $array[100][4]
    For $i = 0 To 99
    For $j = 0 To 3
    $array[$i][$j] = Random(0, 10, 1)
    Next
    Next; Array mit Zufallsinhalt erzeugen

    [/autoit] [autoit][/autoit] [autoit]

    _Array2D_Sort($array, 0)
    _ArrayDisplay($array)

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _Array2D_Sort
    ; Description ...: Sorts a 2D Array by Index
    ; Syntax.........: _Array2D_Sort($avArray[, $iIndex = 0])
    ; Parameters ....: $avArray - Array to display
    ; $iIndex - [optional] Sort Array by this Index
    ; Return values .: Success - Sorted Array
    ; Failure - 0, sets @error:
    ; |1 - $avArray is not an Array
    ; |2 - $avArray is not an 2D-Array
    ; |3 - $iIndex is out of
    ; Author ........: Schnitzel
    ; Modified.......:
    ; Link ..........: https://autoit.de/index.php?page=Thread&threadID=18117
    ; Example .......: Yes
    ; ===============================================================================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _Array2D_Sort(ByRef $avArray, $iIndex = 0)
    If Not IsArray($avArray) Then Return SetError(1, 0, 0)
    If Not UBound($avArray, 0) = 2 Then Return SetError(2, 0, 0)
    If UBound($avArray, 2) <= $iIndex Then Return SetError(3, 0, 0)
    Local $bTausch, $sTmp, $i = 0, $iRuns = UBound($avArray) - 2
    Do
    $bTausch = False
    For $j = 0 To $iRuns - $i
    If $avArray[$j][$iIndex] > $avArray[$j + 1][$iIndex] Then
    For $k = 0 To UBound($avArray, 2) - 1
    $sTmp = $avArray[$j + 1][$k]
    $avArray[$j + 1][$k] = $avArray[$j][$k]
    $avArray[$j][$k] = $sTmp
    Next
    $bTausch = True
    EndIf
    Next
    $i += 1
    Until ($bTausch = False) Or ($i = $iRuns)
    EndFunc ;==>_Array2D_Sort

    [/autoit]


    Wenn jetzt die Werte im ersten Element gleich sind, dann sollen die gleichen nach dem Wert des zweiten Elements sortiert werden. Das ist bei Deiner Funktion nicht der Fall.

  • Zeit

    • Oscar
    • 25. Februar 2010 um 20:04

    Ich würde das so machen:

    [autoit]


    #include <Date.au3>
    If _DateDiff('s', _NowCalcDate() & ' 13:15:00', _NowCalc()) > 0 Then MsgBox(0, '', 'Zeit erreicht')

    [/autoit]
  • _ArraySort sortiert "komisch"

    • Oscar
    • 25. Februar 2010 um 19:55

    Deine Funktion berücksichtigt nicht den Fall, wenn zwei Werte gleich sind. In dem Fall müsste das nächste Element entscheiden, ob ausgetauscht wird oder nicht.

    Ansonsten ist das aber auch eine Bubble-Sort-Variante, oder sehe ich das falsch?

  • _ArraySort sortiert "komisch"

    • Oscar
    • 25. Februar 2010 um 17:52

    Zwei- bis dreihundert Elemente werden bei meiner Bubble-Sort-Funktion noch akzeptabel schnell sortiert. Ich denke, das reicht mir.

  • GuiCreate() Hilfe, wegen Styles

    • Oscar
    • 25. Februar 2010 um 17:31

    Alles mit "$WS_EX_" sind extended Styles und gehören auch entsprechend dort hin. Das solltest Du mal korrigieren, sonst kann es zu unerwünschten Ergebnissen kommen.

    0x80 entspricht übrigens $WS_EX_TOOLWINDOW

  • _ArraySort sortiert "komisch"

    • Oscar
    • 25. Februar 2010 um 17:22

    Ich habe mich noch an einer Bubble-Sort-Funktion versucht. Die Lösung ist ja eigentlich sehr simpel, aber so habe ich mir das vorgestellt.
    Vielleicht nicht die schnellste Lösung, aber für diese Aufgabe reicht's.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    Dim $array[3][3] = [['abc', 'a11', '555'],['bcd', 'a11', '444'],['cde', 'a11', '666']]
    _Array2DSort($array)
    _ArrayDisplay($array)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Array2DSort(ByRef $aSortArray)
    For $i = 0 To UBound($aSortArray) - 2
    For $j = $i + 1 To UBound($aSortArray) - 1
    If $aSortArray[$i][1] > $aSortArray[$j][1] Then _Array2DSwap($aSortArray, $i, $j)
    If $aSortArray[$i][1] = $aSortArray[$j][1] Then
    If $aSortArray[$i][2] > $aSortArray[$j][2] Then _Array2DSwap($aSortArray, $i, $j)
    EndIf
    Next
    Next
    EndFunc ;==>_Array2DSort

    [/autoit] [autoit][/autoit] [autoit]

    Func _Array2DSwap(ByRef $aSwap, $a, $b)
    Local $sTmp
    For $i = 0 To UBound($aSwap, 2) - 1
    $sTmp = $aSwap[$a][$i]
    $aSwap[$a][$i] = $aSwap[$b][$i]
    $aSwap[$b][$i] = $sTmp
    Next
    EndFunc ;==>_Array2DSwap

    [/autoit]


    Warum bin ich da nicht schon gestern drauf gekommen... :huh:

  • _ArraySort sortiert "komisch"

    • Oscar
    • 25. Februar 2010 um 04:11
    Zitat von BugFix

    Mehrstufig sortieren kannst du über einen Umweg mit SQL: https://autoit.de/index.php?page…46336#post46336

    Diese Funktion führt zum Erfolg! :thumbup:
    Darf ich die in einem Projekt (will noch nichts verraten, aber wenn's fertig ist, werde ich es hier veröffentlichen) benutzen?

    Danke auch an alle anderen für die zahlreichen Lösungsansätze, aber BugFixs Funktion lässt sich gut in das Projekt integrieren. :thumbup:

  • _ArraySort sortiert "komisch"

    • Oscar
    • 24. Februar 2010 um 20:37

    Schnuffel: die Funktion von BugFix wirft mehrere Fehlermeldungen aus:

    Code
    _ArraySort() called with wrong number of args.


    Wurde die Parameteranzahl mal gekürzt? Ich erinnere mich nicht mehr. Habe diese Funktion zu wenig genutzt. :S

    autoBert: Na, dann muss ich mir wohl eine eigene Sortierfunktion schreiben. Mal sehen, was sich da machen läßt...

  • _ArraySort sortiert "komisch"

    • Oscar
    • 24. Februar 2010 um 19:01

    Ich habe ein Problem mit _ArraySort. Und zwar mit einem 2D-Array. Ich möchte nach dem 2. Element sortieren lassen. Nun kann es aber sein, dass es mehrere gleiche Einträge gibt, die sich erst im dritten Element unterscheiden.
    Dann passiert es, dass die Sortierung mal so und mal so ausfällt, aber nicht so wie ich das haben will.
    Hier mal ein Beispiel:

    [autoit]


    #include <Array.au3>
    Dim $array[3][3] = [['abc', 'a11', '555'],['bcd', 'a11', '444'],['cde', 'a11', '666']]
    _ArraySort($array,0,0,0,1)
    _ArrayDisplay($array)
    _ArraySort($array,0,0,0,1)
    _ArrayDisplay($array)
    _ArraySort($array,0,0,0,1)
    _ArrayDisplay($array)
    _ArraySort($array,0,0,0,1)
    _ArrayDisplay($array)

    [/autoit]


    Ganz oben sollte die "444" stehen, dann die "555" und dann die "666".
    Gibt's eine Möglichkeit das hinzubekommen oder hat jemand eine Sortierfunktion, die das beherrscht?

  • User Nr. 5555

    • Oscar
    • 24. Februar 2010 um 18:44

    Kann sein, dass die Mitgliederliste später aktualisiert wird, aber die Statistik zeigt: 5555

  • User Nr. 5555

    • Oscar
    • 24. Februar 2010 um 18:33

    Ich hab' mal drauf geachtet!
    Der 5555ste Benutzer ist der User: feel-easy

    Herzlichen Glückwunsch (wozu auch immer)! :D

  • Slider umdrehen

    • Oscar
    • 24. Februar 2010 um 18:29

    Es geht auch einfacher:

    [autoit]

    $x = 100 - GUICtrlRead($slider)

    [/autoit]
  • Registry durchsuchen nach einem Schlüssel

    • Oscar
    • 24. Februar 2010 um 15:46

    Wenn Du alle Fundstellen haben willst, dann sollte es aber auch eine Rückgabe als Variable geben:

    Spoiler anzeigen
    [autoit]


    $sFound = ''
    ToolTip('please wait...', @DesktopWidth / 2, @DesktopHeight / 2, 'Registry-Search', 1, 5)
    $iTimer = TimerInit()
    _RegSearch($sFound, 'HKEY_LOCAL_MACHINE', 'v3.3.4.0')
    ToolTip('')
    MsgBox(0, 'Gefunden:', Round(TimerDiff($iTimer) / 1000, 3) & ' sek.' & @CRLF & $sFound)

    [/autoit] [autoit][/autoit] [autoit]

    Func _RegSearch(ByRef $sFound, $sRegPath, $sSearch)
    Local $sKey, $sVal, $sVar, $i = 0, $j = 0
    While True
    $i += 1
    $sKey = RegEnumKey($sRegPath, $i)
    If @error Then ExitLoop
    _RegSearch($sFound, $sRegPath & '\' & $sKey, $sSearch)
    $j = 0
    While True
    $j += 1
    $sVal = RegEnumVal($sRegPath & '\' & $sKey, $j)
    If @error Then ExitLoop
    $sVar = RegRead($sRegPath & '\' & $sKey, $sVal)
    If StringInStr($sVar, $sSearch, 2) Then $sFound &= $sRegPath & '\' & $sKey & '\' & $sVal & @CRLF
    WEnd
    WEnd
    Return
    EndFunc

    [/autoit]


    BTW: Das komplette durchsuchen dauert bei mir ca. 38 sek. ^^

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™