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
;(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 ###
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
edit: Mit "+" ist übrigens das Numpad-+ gemeint.