Hi
ich bin dabei, ein Programm zu schreiben, was die Mausbewegungen und klicks speichert, um es nacherher wieder abzuspielen.
Bisher habe ich nur die mausklicks fertig
->jede millisekunde wird ein neuer wert in ein array gepackt (wenn linke maustaste gedrückt ist dann der wert "1", wenn nicht dann der wert "0")
Schaut euch mal den Code an un testet diesen dann. Gebt z.B. 2 Sekunden an und schaut beim rekorden auf die uhr.
Es dauert viel länger. Das ist natürlich ein großes Problem, weil dann die Position auch anders ist.
Weiß einer eine Lösung bzw. eine Alternative?
Code:
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <misc.au3>
Global $maus = 0;wenn 1, dann wird gespeichert
Global $position = 0
Global $speicherung = 0
Global $zeit = 0
Global $mausarray[1]
#Region ### START Koda GUI section ### Form=E:\Andere Programme\AutoIT\AutoIt3\Tests\MouseRecorder\fenster.kxf
$Form1 = GUICreate("MouseRecorder", 407, 383, 191, 123)
$Label1 = GUICtrlCreateLabel("Mit diesem Programm werden alle Bewegungen der Maus aufgezeichnet", 16, 16, 379, 66)
GUICtrlSetFont(-1, 12, 400, 0, "Minion Pro SmBd")
GUICtrlSetColor(-1, 0xFF0000)
$Group1 = GUICtrlCreateGroup("Einstellungen", 8, 96, 177, 137)
$Checkbox2 = GUICtrlCreateCheckbox("Speichern von Mausklicks", 24, 120, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("Speichern der Mausposition", 24, 144, 153, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Label3 = GUICtrlCreateLabel("Aufnahme - Dauer in Sekunden:", 24, 176, 157, 17)
$Dauer = GUICtrlCreateInput("0", 24, 200, 153, 21, BitOR($ES_AUTOHSCROLL,$ES_NUMBER))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("Aufnahme Beginnen", 8, 328, 177, 33, $WS_GROUP)
GUICtrlSetBkColor(-1, 0x800000)
$Group2 = GUICtrlCreateGroup("Aufnahme", 208, 96, 177, 105)
$Label4 = GUICtrlCreateLabel("Mausklicks-Dauer in Ms:", 224, 120, 148, 17)
$Label6 = GUICtrlCreateLabel("0", 224, 168, 87, 17)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xFFFF00)
$Label7 = GUICtrlCreateLabel("Sekunden", 320, 168, 53, 17)
$Label5 = GUICtrlCreateLabel("0", 224, 144, 146, 17)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xFFFF00)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Speichern", 208, 224, 177, 33, $WS_GROUP)
GUICtrlSetBkColor(-1, 0x008000)
$Button3 = GUICtrlCreateButton("Abspielen", 208, 328, 177, 33, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Hilfe", 208, 272, 177, 33, $WS_GROUP)
$Group3 = GUICtrlCreateGroup("Hinweiß", 8, 240, 177, 81)
$Label2 = GUICtrlCreateLabel("Nicht mir der Aufnahme über-", 16, 264, 141, 17)
$Label8 = GUICtrlCreateLabel("treiben, sonst kann es zu Fehlern", 16, 280, 160, 17)
$Label9 = GUICtrlCreateLabel("führen!", 16, 296, 37, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
[/autoit] [autoit][/autoit] [autoit]$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
aufnahme()
EndSwitch
WEnd
Func check()
If GUICtrlRead($Dauer) = "0" Then;wenn keine dauer angegeben ist
MsgBox(0,"Hinweiß","Es keine Dauer eingestellt")
EndIf
[/autoit] [autoit][/autoit] [autoit]If GUICtrlRead($Checkbox2) = $GUI_UNCHECKED And GUICtrlRead($Checkbox3) = $GUI_UNCHECKED Then;wenn keine checkbox ausgewählt ist
MsgBox(0,"Hinweiß","Es ist keine Checkbox angewählt!")
EndIf
If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then;wenn Mausklicks gespeichert werden variable setzen
$maus = 1
EndIf
If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then;wenn Positionen gespeichert werden variable setzen
$position = 1
EndIf
$zeit = GUICtrlRead($Dauer)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit]Func aufnahme()
check()
If $maus = 1 Then
Sleep(500)
$zeit = $zeit * 1000
$klick = 0
while 1
if _IsPressed(01) Then
_ArrayAdd($mausarray,"1")
$klick = $klick + 1
Else
_ArrayAdd($mausarray,"0")
EndIf
GUICtrlSetData($Label5, $klick)
[/autoit] [autoit][/autoit] [autoit]$zeit = $zeit - 1
If $zeit = 0 Then ExitLoop
WEnd
_ArrayDisplay( $mausarray, "Whole array" )
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]