• Ich habe öfters mit ewig gleichen Formularen, z.B. Umfragen zu tun.
    Bis jetzt, hatte ich mir immer für jede Situation ein Klickskript geschrieben, jetzt habe ich das ganze mal zusammengefasst:
    Der ClickR kennt zwei Modi: Mausweg und Mausroute. Bei ersterem wird eine endliche Zahl an Punkten aufgezeichnet, auf die immer wieder geklickt wird (z.B. bei 1000 Dialogboxen, die man mit OK bestätigen muss.) Mit der Mausroutenfunktion nimmt man einen Anfangspunkt, den zweiten Punkt und den letzten Punkt auf, der ClickR berechnet daraufhin Zwischenpunkte, und klickt auch diese durch. (praktisch z.B. für Checkboxen)
    Es lässt sich außerdem die Zeit zwischen den einzelnen Klicks und zwischen den Wiederholungen einstellen.

    Da ich weiß, dass das Skript für B*ts missbraucht werden könnte, veröffentliche ich es unter einer CC-by-sa-nc-Antibot-Lizenz:
    Ihr dürft es frei verwenden, solange ihr 1.) meinen Namen und die Lizenz nicht aus dem Quellcode entfernt, 2.) Veränderungen nur unter den selben Bedingungen vornehmt, 3.) es nicht kommerziell verwertet und 4.) ihr es nicht für die Automatisierung von Spielen jeglicher Art verwendet.

    Spoiler anzeigen
    [autoit]

    ;(c) 2010 by L3viathan ([email='mail@l3viathan.de'][/email])
    ;cc-by-sa-nc-Antibot-Lizenz:
    ;Ihr dürft das hier frei verwenden, solange ihr
    ;1.) meinen Namen und die Lizenz nicht aus dem Quellcode entfernt,
    ;2.) Veränderungen nur unter den selben Bedingungen vornehmt,
    ;3.) es nicht kommerziell verwertet
    ;und
    ;4.) ihr es nicht für die Automatisierung von Spielen jeglicher Art verwendet.
    ;-----------------------------------------------------------------------------
    Global $tln=False
    #include <ButtonConstants.au3>
    #include <File.au3>
    #include <Misc.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $ClickR = GUICreate("ClickR", 290, 57);194
    $RecordBtn = GUICtrlCreateButton("Mausweg aufzeichnen", 8, 8, 129, 41, $WS_GROUP)
    GUICtrlSetResizing(-1,802)
    $RecordTLNBtn = GUICtrlCreateButton("Mausroute aufzeichnen", 152, 8, 129, 41, $WS_GROUP)
    GUICtrlSetResizing(-1,802)
    $Einstellungen = GUICtrlCreateGroup("Einstellungen", 8, 64, 273, 121)
    GUICtrlSetResizing(-1,802)
    $RptChkBx = GUICtrlCreateCheckbox("Repetiv", 16, 88, 425, 25)
    GUICtrlSetResizing(-1,802)
    $Label1 = GUICtrlCreateLabel("Abstand zwischen einzelnen Klicks (in ms):", 16, 120, 205, 17)
    GUICtrlSetResizing(-1,802)
    $Label2 = GUICtrlCreateLabel("Abstand zwischen Klickreihen (in ms):", 16, 152, 181, 17)
    GUICtrlSetResizing(-1,802)
    $SingleTIn = GUICtrlCreateInput("0", 224, 120, 49, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
    GUICtrlSetResizing(-1,802)
    $TIn = GUICtrlCreateInput("0", 224, 152, 49, 21, BitOR($ES_AUTOHSCROLL, $ES_NUMBER))
    GUICtrlSetResizing(-1,802)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetResizing(-1,802)
    $GoBtn = GUICtrlCreateButton("Los!", 8, 180, 265, 41, $WS_GROUP)
    GUICtrlSetResizing(-1,802)
    GUICtrlSetState($GoBtn,$GUI_DISABLE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $RecordBtn
    GUICtrlSetState($RptChkBx,$GUI_CHECKED)
    GUISetState(@SW_HIDE)
    _record()
    GUISetState(@SW_SHOW)
    _enlarge()
    Case $RecordTLNBtn
    GUISetState(@SW_HIDE)
    _recordTLN()
    GUISetState(@SW_SHOW)
    _enlarge()
    case $Label1
    GUICtrlSetState($SingleTIn,$GUI_FOCUS)
    Case $Label2
    GUICtrlSetState($TIn,$GUI_FOCUS)
    case $GoBtn
    _go()
    EndSwitch
    WEnd
    Func _enlarge()
    GUICtrlSetState($GoBtn,$GUI_ENABLE)
    GUICtrlSetState($RecordBtn,$GUI_DISABLE)
    GUICtrlSetState($RecordTLNBtn,$GUI_DISABLE)
    For $i=57 to 260 Step 3
    WinMove("ClickR","",Default,Default,290,$i)
    Next
    EndFunc
    Func _record()
    $hFile=FileOpen("mgp.txt",2)
    HotKeySet("{NUMPADADD}","_d")
    HotKeySet("{ENTER}","_d")
    TrayTip("ClickR","Bewegen Sie die Maus über den ersten Punkt und drücken Sie ""+"" zum Aufzeichnen",10)
    Do
    Until _IsPressed("6B")
    $mgp=MouseGetPos()
    FileWrite($hFile,$mgp[0] & " " & $mgp[1] & @CRLF)
    Sleep(200)
    While 1
    TrayTip("ClickR","Bewegen Sie die Maus über den nächsten Punkt und drücken Sie ""+"" zum Aufzeichnen, oder ENTER zum Beenden.",10)
    Do
    If _isPressed("0D") then ExitLoop 2
    Until _IsPressed("6B")
    $mgp=MouseGetPos()
    FileWrite($hFile,$mgp[0] & " " & $mgp[1] & @CRLF)
    Sleep(200)
    WEnd
    FileClose($hFile)
    EndFunc
    Func _recordTLN()
    $hFile=FileOpen("mgp.txt",2)
    HotKeySet("{NUMPADADD}","_d")
    TrayTip("ClickR","Bewegen Sie die Maus über den ersten Punkt und drücken Sie ""+"" zum Aufzeichnen",10)
    Do
    Until _IsPressed("6B")
    $mgp1=MouseGetPos()
    Sleep(200)
    TrayTip("ClickR","Bewegen Sie die Maus über den zweiten Punkt (Abstand) und drücken Sie ""+"" zum Aufzeichnen",10)
    Do
    Until _IsPressed("6B")
    $mgp2=MouseGetPos()
    Sleep(200)
    TrayTip("ClickR","Bewegen Sie die Maus über den letzten Punkt und drücken Sie ""+"" zum Aufzeichnen",10)
    Do
    Until _IsPressed("6B")
    $mgp3=MouseGetPos()
    $hx=$mgp2[0]-$mgp1[0]
    $hy=$mgp2[1]-$mgp1[1]
    $tx=($mgp3[0]-$mgp1[0])/$hx
    $ty=($mgp3[1]-$mgp1[1])/$hy
    If $tx>$ty Then $tx=$ty
    For $i=0 To Ceiling($ty)
    FileWrite($hFile,$mgp1[0]+$i*$hx & " " & $mgp1[1]+$i*$hy & @CRLF)
    Next
    FileClose($hFile)
    EndFunc
    Func _d()
    EndFunc
    Func _go()
    HotKeySet("{ESC}","_x")
    GUISetState(@SW_HIDE)
    TrayTip("ClickR","Press ESC to cancel",10)
    $hFile=FileOpen("mgp.txt",0)
    $Sbtw=GUICtrlRead($SingleTIn)
    $btw=GUICtrlRead($TIn)
    $chk=GUICtrlRead($RptChkBx)
    $lines=_FileCountLines("mgp.txt")
    Do
    For $i=1 To $lines
    $line=FileReadLine($hFile,$i)
    $coord=StringSplit($line," ")
    MouseClick("left",$coord[1],$coord[2],1,0)
    If $Sbtw <> 0 Then Sleep($Sbtw)
    Next
    If $btw <> 0 Then Sleep($btw)
    Until $chk <> $GUI_CHECKED
    GUISetState(@SW_SHOW)
    EndFunc
    Func _x()
    Exit
    EndFunc

    [/autoit]

    edit: Mit "+" ist übrigens das Numpad-+ gemeint.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Gut gemacht :thumbup:

    Ich denke jedoch die Lizens wird den Bottern kein Problem machen :(

    mfg Ubuntu

  • Sieht mir nach einem netten Tool aus :).


    Puh *Schweißabwisch*
    Bin damit nicht unter die Kategorie Bot gefallen. Hatte schon Angst gehabt, da es ja etwas grenzwertig ist... (selbst wenn es nicht als Bot gedacht ist)
    Naja, wie auch immer.. ;)

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.