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

Beiträge von Yjuq

  • Problem mit Switch in For-Schleife

    • Yjuq
    • 8. April 2013 um 16:25

    JETZT hab ich tatsächlich den Fehler warum das nicht reagiert ^^
    Du rufst 10x GUIGetMsg auf...

    Das verlangsamt die Schleife extrem und es kann die Buttons nicht registrieren.
    GUIGetMsg reguliert nämlich den Schleifendurchlauf von automatisch wegen der Computer Auslastung (CPU).
    Durch diese For-Schleife reguliert GUIGetMsg das ganze 10x was die Schleife erheblich verlangsamt.

    Dadurch kann die GUIGetMsg den Button nicht registrieren. Die Schleife lässt sich beschleunigen indem du die Maus bewegst!
    Normalerweise wird die Problematik des GUIGetMsg aufrufst in Grafische Anwendungen bemerkbar, wo das Bild sich bei jeden Schleifendurchlauf verändert.

    Wenn du mal ganz schnell den Button drückst, hast du vielleicht glück und es reagiert darauf. Das zeigt zumindest dass AutoIt es zulässt!
    Daher ist der Vorschlag von Alcros anzunehmen.

    Pühüü ^^

  • Problem mit Switch in For-Schleife

    • Yjuq
    • 8. April 2013 um 15:56

    Hier ist ein *lauffähiges* Script ... (Ausgangssituation geschaffen ...)
    Ja, es scheint tatsächlich so dass es nicht funktioniert ^^
    Such dir am besten ne andere Lösung oder gehe die Ursache auf den Grund!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $aidButton[4], $i

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

    $hGUI = GUICreate('', 70, 70)
    $aidButton[0] = GUICtrlCreateButton('', 10, 10, 20, 20)
    $aidButton[1] = GUICtrlCreateButton('', 40, 10, 20, 20)
    $aidButton[2] = GUICtrlCreateButton('', 10, 40, 20, 20)
    $aidButton[3] = GUICtrlCreateButton('', 40, 40, 20, 20)
    GUISetState()

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

    While Sleep(10)
    For $i = 0 To UBound($aidButton[$i]) - 1
    Switch GUIGetMsg()
    Case $aidButton[$i]
    Switch Random(1, 4, 1)
    Case R(1)
    Case R(2)
    Case R(3)
    Case R(4)
    _Output($aidButton[$i])
    EndSwitch
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Next
    WEnd

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

    Func R($r)
    Return $r
    EndFunc

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

    Func _Output($idButton)
    Local Static $iCount
    $iCount += 1
    ConsoleWrite($iCount & ' --> ' & $idButton & @CRLF)
    EndFunc

    [/autoit]

    €dit:
    DAS nehme ich direkt wieder zurück :x
    Habe aus dummheit "UBound($aidButton[$i])" verwendet... :D
    Es funktioniert doch, allerdings musst du bei GUIGetMsg aufpassen!
    Das Problem dabei ist, es registriert keine weiteren Events wenn die Hauptschleife (also die ganz äußere) nicht einmal komplett durchlaufen ist...
    Du darfst also nur 1x GUIGetMsg aufrufen in der Schleife. Also ist der Verbesserungsvorschlag von Alcros auch direkt die Lösung zu deinem Problem! :)

    €dit2: Sorry... Heute ist nicht mein Tag :x >> Ich sollte erst überlegen was ich schreibe ^^
    Melde mich wieder wenn ich die tatsächliche Fehlerquelle gefunden habe :x

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $aidButton[4], $GMsg, $i

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

    $hGUI = GUICreate('', 70, 70)
    $aidButton[0] = GUICtrlCreateButton('', 10, 10, 20, 20)
    $aidButton[1] = GUICtrlCreateButton('', 40, 10, 20, 20)
    $aidButton[2] = GUICtrlCreateButton('', 10, 40, 20, 20)
    $aidButton[3] = GUICtrlCreateButton('', 40, 40, 20, 20)
    GUISetState()

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

    While Sleep(10)
    $GMsg = GUIGetMsg()
    For $i = 0 To UBound($aidButton) - 1
    Switch $GMsg
    Case $aidButton[$i]
    Switch Random(1, 4, 1)
    Case R(1)
    Case R(2)
    Case R(3)
    Case R(4)
    _Output($aidButton[$i])
    EndSwitch
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Next
    WEnd

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

    Func R($r)
    Return $r
    EndFunc

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

    Func _Output($idButton)
    Local Static $iCount
    $iCount += 1
    ConsoleWrite($iCount & ' --> ' & $idButton & @CRLF)
    EndFunc

    [/autoit]
  • Container.au3 >> Dynamisches Array

    • Yjuq
    • 7. April 2013 um 17:54

    Zu dem lokalen statischen Array:
    Dies war meine erste Überlegung! Aber ich wollte einfach nur so wenig Speicherplatz wie möglich verbrauchen und nichts vorher reservieren. Dynamisch ist es ja erst deshalb, weil die Speichergröße von beginn der Scriptes nicht festgelegt werden kann bzw. Es man nicht festlegen sollte. Zudem wäre man auch auf eine gewisse Containergröße eingeschränkt. Ich persönlich würde lieber bis zu der Grenze von AutoIt bzw. Des Computers gehen! :)

    Zu dem Hinzufügen des Containers:
    Setz den Rückgabewert einfach auf $avTempArr[0]! Dort drin wird die Anzahl der Container gespeichert. Im Grunde steht der Index des Angelegten Elements dort drin! ^^

    Zu dem Container löschen:
    Das Problem ist: Die ID's der vorherigen Containers würden nicht mehr stimmen. Um exakt zu sein sind es die Container die eine höhere ID haben als der gelöschte Container. Ich will und kann den Programmierer nicht zumuten, die ID's selbstständig um 1 zu verringern. Da will ich mir noch was für meine Funktion einfallen lassen. ^^
    Die Umsetzung folgt noch! :P

    Zu dem Stringzugriff:
    Wäre noch eine Option! Aber ich sehe da keinen größeren Sinn... Wenn es die Übersichtlichkeit des Codes erhöhen soll, man kann die Variablen ja dementsprechend benennen.

    Selbstverständlich kann man die Funktion auch auf mehrere verteilen. Allerdings wollte ich es versuchen in eine Funktion zusammen zu setzen! Man kann sich ja selber ne Funktion schreiben welches die Container() Funktion mit den nätigen Parametern aufruft! Ist ja nicht so schwer! ^^

    So einen "CMD" -Parameter kann man sicherlich noch als Zusatz einbauen. Oder vielleicht auch diese ganzes Parameter Wirr-Warr ersetzen. Es wäre dann einfacher weitere Funktionen in den Container() einzufügen. Kann man ja drauf umsteigen. ^^

    PS: Solche Zeilen hier "ObjCreate("System.Collections.ArrayList")" wollte ich nicht verwenden. Es war einfach eine Übung um sowas selber zu basteln! Ich denke, dass habe ich schon befriedigend umgesetzt. ^^ Werde dann bei Gelegenheit (also Heute) noch verschlimmbessern! :P

  • Mausklick simulieren und ausführen.

    • Yjuq
    • 7. April 2013 um 11:50

    Der 2te Parameter von _IsPressed ist die Angabe der DLL...
    Du kannst ein ein Handle der DLL übergeben oder eine eigene DLL defineren die aufgerufen werden soll.
    Vorrausgesetzt sie beinhaltet die Funktion ^^

    Nun ja, zurück zum Thema :x


    Am besten benutzt du die Timer funktionen und misst die Zeit :x

    [autoit]

    #include <Misc.au3>

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

    $iTimer = 250

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

    While Sleep(10)
    If _IsPressed('01') Then

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

    $hTimer = TimerInit()

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

    Do
    Sleep(10)
    Until Not _IsPressed('01')

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

    While Sleep(10) And TimerDiff($hTimer) <= $iTimer
    If _IsPressed('01') Then
    _Funktion()
    ExitLoop
    EndIf
    WEnd

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

    $hTimer = 0
    EndIf
    WEnd

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

    Func _Funktion()
    ConsoleWrite('Doppelklick' & @CRLF)
    EndFunc

    [/autoit]

    Habs nicht getestet (Im Browser getippt)
    Sollte aber klappen .x

  • Container.au3 >> Dynamisches Array

    • Yjuq
    • 7. April 2013 um 10:32

    Guten Tag AutoIt Community! :D
    Wie vielleicht eine Hand voll von euch wissen sollte, hatte ich mal mit "Containern" experimentiert. Die Aufgabe war es, ein Container (dynamisches Array) zu erstellen ohne externe Ressourcen. Ich habe daraus inzwischen eine ganze Funktion gemacht die ich gerne hier zeigen möchte. Vielleicht hilft es den einen oder anderen mal weiter oder gibt anreiz das ganze zu erweitern!

    Ich habe dazu noch ein Beispiel geschrieben um die Funktionsweise der Funktion zu verdeutlichen! :thumbup:


    Hier ist die Container.au3

    Spoiler anzeigen
    [autoit]

    ;// Container Return bei Erfolg:
    ;// -> Container erstellen Container() ID des Containers
    ;// -> Element hinzufügen Container(ID, 0, Wert) True
    ;// -> Element verändern Container(ID, Index, Wert) True
    ;// -> Element lesen Container(ID, Index) Inhalt des Containers
    ;// -> Element entfernen Container(ID, Index, Default*) True
    ;// -> Anzahl Elemente Container(ID) Anzahl der Elemente
    ;// -> Container löschen Container(ID, Default*) True
    ;// -> Anzahl Container Container(Default*) Anzahl der Container
    ;// -> Alle Container löschen Container(Default*, Default*) True
    ;// * Hier ist das Schlüsselwort "Default" anzugeben!

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

    Func Container($vID = 0, $vIndex = False, $vValue = 0)
    ;// Make-Grafik (http://www.autoit.de)
    If Not IsDeclared('avContainer') Then Global $avContainer[1]
    Local Static $iElement

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

    Local $bDefault
    If $vID = Default Then $bDefault = True

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

    Local $avNewContainer[1]
    Local $avTempArr
    Local $iCount

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

    If $vID = Default Then
    $avTempArr = $avContainer[0]
    Else
    $avTempArr = $avContainer[$vID]
    EndIf

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

    ;// Container erstellen
    If Not $vID And Not IsKeyword($vID) Then
    $avContainer[0] += 1
    $iElement += 1
    ReDim $avContainer[$iElement + 1]
    $avContainer[$iElement] = $avNewContainer
    Return $iElement

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

    ;// Element hinzufügen
    ElseIf $vID And Not $vIndex And Not IsBool($vIndex) And Not IsKeyword($vIndex) Then
    $avTempArr[0] += 1
    ReDim $avTempArr[$avTempArr[0] + 1]
    $avTempArr[$avTempArr[0]] = $vValue
    $avContainer[$vID] = $avTempArr
    Return True

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

    ;// Element verändern
    ElseIf $vID And $vIndex And $vValue Then
    $avTempArr[$vIndex] = $vValue
    $avContainer[$vID] = $avTempArr
    Return True

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

    ;// Element lesen
    ElseIf $vID And $vIndex And Not IsKeyword($vValue) Then
    Return $avTempArr[$vIndex]

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

    ;// Element entfernen
    ElseIf $vID And $vIndex Then
    $avTempArr[0] -= 1
    For $iCount = $vIndex To $avTempArr[0]
    $avTempArr[$iCount] = $avTempArr[$iCount + 1]
    Next
    ReDim $avTempArr[$avTempArr[0] + 1]
    $avContainer[$vID] = $avTempArr
    Return True

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

    ;// Anzahl Elemente
    ElseIf $vID And IsBool($vIndex) Then
    Return $avTempArr[0]

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

    ;// Container löschen
    ElseIf $vID Then
    Dim $avTempArr[1]
    $avContainer[$vID] = $avTempArr
    Return True

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

    ;// Anzahl Container
    ElseIf IsKeyword($vID) And Not IsKeyword($vIndex) Then
    Return $avContainer[0]

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

    ;// Alle Container löschen
    Else
    For $iCount = 1 To $avContainer[0]
    Container($iCount, Default)
    Next
    Return True

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

    EndIf
    EndFunc ;==>Container

    [/autoit]


    Und hier das Beispiel:

    Spoiler anzeigen
    [autoit]

    ; Was ist ein Container?
    ; Ein Container ist ein dynamisches Array! Die Funktion bietet folgende Möglichkeiten:

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

    #include "Container.au3"

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

    ; Container erstellen:
    ; Ein Aufruf ohne Parameter erstellt einen Container und gibt die ID aus um darauf zugreifen zu
    ; können.

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

    Global $idContainer = Container(), $iCounter

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

    ; Elemente hinzufügen:
    ; -> An den ersten Parameter wird die ID übergeben.
    ; -> Der zweite Parameter muss 0 sein (als Integer) um anzugeben dass ein neues Element erstellt
    ; werden soll. Dieser wird an den Container dran gehängt.
    ; -> Der dritte Parameter ist optional. Bleibt er leer, so wird in das Element der Integer 0
    ; geschrieben. Ansonsten kann man einen eigenen Wert festlegen. Strings, Integers, Floats und
    ; die Bool'schen Werte "True" und "False" sind erlaubt! Das Schlüsselwort "Default" ist für
    ; die innere verarbeitung in der Funktion reserviert!

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

    Container($idContainer, 0) ; Beinhaltet nun den Integer 0
    Container($idContainer, 0, "String")
    Container($idContainer, 0, 123)
    Container($idContainer, 0, 12.3)
    Container($idContainer, 0, True)

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

    ; Elemente verändern:
    ; Auch können Elemente verändert / überschrieben werden. Die Syntax ist die gleiche wie bei dem
    ; hinzufügen von Elementen. Nur dass an den zweite Parameter der Index übergeben wird. Ein
    ; Container beginnt mit dem Index 1!

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

    Container($idContainer, 1, 10)
    Container($idContainer, 5, False)

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

    ; Elemente lesen:
    ; Natürlich können Elemente auch wieder ausgelesen werden. Dafür wird die Syntax wie bei
    ; "Elemente verändern" verwendet nur ohne den dritten Parameter.

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

    ConsoleWrite(Container($idContainer, 2) & @CRLF)

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

    ; Element entfernen:
    ; Elemente können auch entfernt werden. Die Syntax ist die gleiche wie bei "Element hinzufügen"
    ; nur dass an den dritten Parameter das Schlüsselwort "Default" übergeben werden muss.

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

    Container($idContainer, 2, Default)
    ConsoleWrite(Container($idContainer, 2) & @CRLF)

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

    ; Anzahl Elemente:
    ; Um die Anzahl an Elementen in einen Container auszugeben, ist nur der erste Parameter zu
    ; verwenden!

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

    ConsoleWrite(@CRLF & Container($idContainer) & @CRLF)
    For $iCounter = 1 To Container($idContainer)
    ConsoleWrite(Container($idContainer, $iCounter) & @CRLF)
    Next

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

    ; Container löschen:
    ; Um den ganzen Inhalt eines Containers zu löschen, muss einfach nur der erste Parameter
    ; angegeben und der zweite mit dem Schlüsselwort "Default" besetzt werden. Einen ganzen
    ; Container komplett zu löschen würde in der derzeitigen Funktion nur zu einen ID Chaos führen.
    ; Ich werde das noch beheben!

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

    Container($idContainer, Default)
    Container($idContainer, 0, 'Alles gelöscht!')

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

    For $iCounter = 1 To Container($idContainer)
    ConsoleWrite(@CRLF & Container($idContainer, $iCounter) & @CRLF)
    Next

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

    ; Anzahl Container:
    ; Falls man irgendwann einmal wissen muss, wieviele Container angelegt wurden, dann kann muss
    ; nur an den erste Parameter das Schlüsselwort "Default" übergeben werden.

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

    ConsoleWrite(@CRLF & 'Anzahl Container: ' & Container(Default) & @CRLF)

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

    ; Alle Container löschen:
    ; Und um den Inhalt aller Container zu löschen, muss einfach an den ersten sowie zweiten
    ; Parameter das Schlüsselwort "Default" übergeben werden.

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

    Container(Default, Default)
    Container($idContainer, 0, 'Alles erneut gelöscht!')

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

    For $iCounter = 1 To Container($idContainer)
    ConsoleWrite(@CRLF & Container($idContainer, $iCounter) & @CRLF)
    Next

    [/autoit]


    Ich wünsche viel Spaß damit! :D

  • GUI per Maus einblenden

    • Yjuq
    • 7. April 2013 um 00:21

    Ich versuche gerade dein Code zu verstehen.
    Bitte hilf mir dabei ^^

    Warum machst du an einigen Stellen $begin = $begin_xxx?

    Ich beziehe mich auf diese Frage auf folgendes:
    Warum verwendest du ausgerechnet die Zahl 9999999?

  • Taschenrechner Error

    • Yjuq
    • 5. April 2013 um 22:44

    Create ist das Englische Wort für "erstellen".
    Ctrl steht für "Control".

    Weil du ein Control auslesen möchtest, ist "Ctrl" wohl eine bessere wahl als "Create".
    Das weiß ja sogar ich mit meinen miserablen Englischkünsten. :D

  • Buttons mit Farbänderung

    • Yjuq
    • 3. April 2013 um 18:50

    Zudem würde ich dir ein Array empfehlen, wenn da noch mehr von diesen Buttons erscheinen sollen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiButton.au3>
    #include <WindowsConstants.au3>
    Global $GMsg, $iCount
    Global $avButton[4][3]

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

    GUICreate('')
    $avButton[0][0] = GUICtrlCreateButton("", 112, 64, 25, 25)
    $avButton[0][1] = "0101"
    $avButton[1][0] = GUICtrlCreateButton("", 212, 64, 25, 25)
    $avButton[1][1] = "0100"
    $avButton[2][0] = GUICtrlCreateButton("", 112, 128, 25, 25)
    $avButton[2][1] = "0110"
    $avButton[3][0] = GUICtrlCreateButton("", 212, 128, 25, 25)
    $avButton[3][1] = "1100"

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

    GUISetState()

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

    While True
    $GMsg = GUIGetMsg()
    Switch $GMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    For $iCount = 0 To UBound($avButton) - 1
    If $GMsg = $avButton[$iCount][0] Then ; Wenn Button gedrückt wird...
    $avButton[$iCount][2] = Not $avButton[$iCount][2]
    If $avButton[$iCount][2] Then
    GUICtrlSetBkColor($avButton[$iCount][0], 0x990000)
    _Func1($avButton[$iCount][1])
    Else
    GUICtrlSetBkColor($avButton[$iCount][0], 0x059122)
    _Func1($avButton[$iCount][1])
    EndIf
    EndIf
    Next
    WEnd

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

    Func _Func1($var)
    MsgBox(0, "Test", $var)
    EndFunc ;==>_Func1

    [/autoit]
  • Hilfe - Verzweifle mit der Zwischenablage

    • Yjuq
    • 27. März 2013 um 16:54

    Codetechnisch ist alles korrekt...
    Wo willst du denn was auslesen?

  • Anfangen mit der Sprache AutoIt

    • Yjuq
    • 27. März 2013 um 13:45

    Du kannst in der Regel jeden Bereich mit AutoIt abdecken.
    Die einzigsten Einschränkungen die ich bis jetzt festgestellt habe, ist die Geschwindigkeit und das es nicht Plattformunabhängig ist.

    Jedenfalls ist so ziemlich alles möglich in AutoIt. Aber ob das praktisch leicht umzusetzen ist, ist ne andere Frage.
    Für den Einstieg ist es gut geeignet.

    Ich selber habe vor 3 Jahren angefangen, inzwischen lerne ich nebenbei noch C++.
    Du solltest dir überlegen was du alles für Anforderungen hast.

    PS: Ich habe PHP bisher immer zu den Programmiersprachen mitgezählt.

  • Schnelleres als MouseClicks ?

    • Yjuq
    • 26. März 2013 um 20:40

    Dann verlink die Seite bitte!
    Vemutlich wird da mit JavaScript hantiert.

  • Schnelleres als MouseClicks ?

    • Yjuq
    • 26. März 2013 um 19:59

    Wo ist diese Tabelle zu finden?
    Dann kann man selber schauen.

    Ansonsten den HTML Code auslesen und die einzelnen Elemente anschauen.
    Ich gehe mal davon aus das du das ganze markieren wolltest und dann jeweils in die Zwischenablage legen wolltest?

  • suche schnelle Routine um einen großen String verschlüsseln

    • Yjuq
    • 26. März 2013 um 18:47

    Wenn dir das hier nicht schnell genug ist kann ich dir nicht helfen...

    Spoiler anzeigen
    [autoit]

    #include <Crypt.au3>

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

    Global $iCount, $sString, $hTime

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

    _Crypt_Startup()

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

    ; 1 Zeichen = 1 Byte
    ; 1024 Byte = 1 Kilobyte
    ; 1024 Kilobyte = 1 MegaByte
    For $iCount = 1 To 1024 * 1024
    $sString &= Chr(Random(32, 126, 1))
    Next

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

    ConsoleWrite(@CRLF & '$sString --> ' & StringLen($sString) / 1024 / 1024 & ' MB' & @CRLF & @CRLF)

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

    $hTime = TimerInit()
    $sString = _Crypt_EncryptData($sString, _Crypt_DeriveKey('Passwort', $CALG_RC4), $CALG_USERKEY)
    ConsoleWrite('Zeit: ' & TimerDiff($hTime) / 1000 & ' Sekunden' & @CRLF & @CRLF)
    $hTime = ''

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

    _Crypt_Shutdown()

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

    FileWrite('Sample.txt', $sString)

    [/autoit]
  • Zweidimensionales Array nach Spalten sortieren

    • Yjuq
    • 26. März 2013 um 14:54

    Hier habe ich mal einen kleinen Ansatz.
    Allerdings wird da immer eine Spalte verdoppelt...
    Muss ich mal noch schauen wie ich das beheben kann.

    €dit: Hab ihn gerade gefunden.
    Der Fehler lag in Zeile 42.
    Dort hatte ich folgendes stehen: "If $iCountThree = UBound($aiNumber) - 1 Then ExitLoop(2)"
    (Die -1 nach dem UBound muss natürlich weg...)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Global $iCountOne, $avOrder[26], $avInput[10][5], $iCountTwo

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    ; Füllt das Array $avOrder mit den Buchstaben A bis Z.
    For $iCountOne = 0 To UBound($avOrder) - 1
    $avOrder[$iCountOne] = Chr($iCountOne + 65)
    Next

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

    ; Füllt das Array $avInput mit zufälligen Buchstaben von A bis Z.
    For $iCountOne = 0 To UBound($avInput) - 1
    For $iCountTwo = 0 To UBound($avInput, 2) - 1
    $avInput[$iCountOne][$iCountTwo] = Chr(Random(65, 90, 1))
    Next
    Next

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

    _ArrayDisplay($avInput, '$avInput - Vor der Sortierung')
    _ArraySortColumn($avInput, $avOrder)
    _ArrayDisplay($avInput, '$avInput - Nach der Sortierung')

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    ; $avInput >> Das zu sortierende Array.
    ; $avOrder >> Array mit der Reihenfolge der zu sortierenden Zeichen.
    Func _ArraySortColumn(ByRef $avInput, $avOrder)
    Local $avCopy = $avInput
    Local $aiNumber[UBound($avInput, 2)]
    Local $iCountOne, $iCountTwo, $iCountThree

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

    For $iCountOne = 0 To UBound($avOrder) - 1
    For $iCountTwo = 0 To UBound($avCopy, 2) - 1
    If $avCopy[0][$iCountTwo] = $avOrder[$iCountOne] Then
    $aiNumber[$iCountThree] = $iCountTwo
    $iCountThree += 1
    If $iCountThree = UBound($aiNumber) Then ExitLoop(2)
    EndIf
    Next
    Next

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

    For $iCountOne = 0 To UBound($avCopy, 2) - 1
    For $iCountTwo = 0 To UBound($avCopy) - 1
    $avInput[$iCountTwo][$iCountOne] = $avCopy[$iCountTwo][$aiNumber[$iCountOne]]
    Next
    Next
    EndFunc

    [/autoit]
  • Func problem

    • Yjuq
    • 25. März 2013 um 18:13

    Okey, und wenn du mir jetzt noch sagst wofür das ganze werden soll,
    kann man da sicherlich noch besser helfen...

  • Func problem

    • Yjuq
    • 25. März 2013 um 18:04

    Stefan... lad bitte das gesammte ausführbare Script hoch.
    Dann kann ich dir konkreter helfen.

  • Fenster "Leiste" erweitern

    • Yjuq
    • 25. März 2013 um 17:04

    Ich hatte mir da per GDI+ immer eigene Buttons gemacht.
    Ansonsten würde mir nichts dazu einfallen.

    €dit: Mir ist da doch noch was eingefallen. Setz einfach eine Child GUI über die Titelleiste. Das sollte hinhauen.

  • Abbruchbedingung in For Schleife

    • Yjuq
    • 25. März 2013 um 14:45

    Mit Timer arbeiten :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $idButtonOne, $idButtonTwo, $bRun

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

    ConsoleWrite(@CRLF)

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    $hGUI = GUICreate('Example', 120, 70)
    $idButtonOne = GUICtrlCreateButton('Start', 10, 10, 100, 20)
    $idButtonTwo = GUICtrlCreateButton('Stop', 10, 40, 100, 20)
    GUISetState()

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    While Sleep(10)
    _Event()
    WEnd

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    Func _Event($iFlag = 1)
    Switch GUIGetMsg()
    Case $idButtonOne
    If $iFlag = 1 Then _Start()
    If $iFlag = 2 Then _Stop()
    Case $idButtonTwo
    If $iFlag = 2 Then _Stop()
    Case $GUI_EVENT_CLOSE
    GUI_EVENT_CLOSE()
    EndSwitch
    EndFunc

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

    Func _Start()
    Local $iCount, $hTime
    $bRun = True

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

    ConsoleWrite('+ START' & @CRLF)

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

    $hTime = TimerInit()
    For $iCount = 1 To 20
    _Event(2)
    If Not $bRun Then ExitLoop

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

    If TimerDiff($hTime) >= 250 Then
    ConsoleWrite('> ' & $iCount & @CRLF)
    $hTime = TimerInit()
    Else
    $iCount -= 1
    EndIf

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

    If $iCount = 20 Then GUI_EVENT_CLOSE()
    Next
    EndFunc

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

    Func _Stop()
    $bRun = False
    ConsoleWrite('! STOP' & @CRLF & @CRLF)
    EndFunc

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

    Func GUI_EVENT_CLOSE()
    ConsoleWrite(@CRLF)
    Exit
    EndFunc

    [/autoit]
  • Abbruchbedingung in For Schleife

    • Yjuq
    • 25. März 2013 um 14:16

    So in etwa?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)

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

    Global $hGUI, $idButtonOne, $idButtonTwo, $iEvent

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    $hGUI = GUICreate('Example', 120, 70)
    $idButtonOne = GUICtrlCreateButton('Start', 10, 10, 100, 20)
    $idButtonTwo = GUICtrlCreateButton('Stop', 10, 40, 100, 20)
    GUISetState()

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    While Sleep(10)
    _Event()
    WEnd

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    Func _Event($iFlag = 1)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    GUI_EVENT_CLOSE()
    Case $idButtonOne
    _Start()
    Case $idButtonTwo
    _Stop($iFlag)
    EndSwitch
    EndFunc

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

    Func GUI_EVENT_CLOSE()
    Exit
    EndFunc

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

    Func _Start()
    Local Static $bRun
    $bRun = Not $bRun
    For $iCount = 1 To 10000
    _Event(2)
    If Not $bRun Then ExitLoop(1)
    ConsoleWrite($iCount & @CRLF)
    Next
    EndFunc

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

    Func _Stop($iFlag)
    If $iFlag = 2 Then _Start()
    ConsoleWrite('! ENDE' & @CRLF)
    EndFunc

    [/autoit]


    Ich persönlich würde ja den GUIOnEventMode verwenden...

    ... Ich denke mal wieder viel zu umständlich ^^

  • Probleme mit der logdatei (FileWrite)

    • Yjuq
    • 25. März 2013 um 13:50

    Also zu #1:
    Schreib dir noch ein Script was dir die Arbeit macht.
    Kann man fast in 10 Zeilen Code hinkriegen.

    Zu #2:
    Keine Ahnung ohne das vollständige Script.

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™