phantom Posted January 14, 2007 Posted January 14, 2007 (edited) Hi i am quite new to autoit i have made a script that records where you move the mouse it is quite basic and may not be very useful but i thought i would share it with you all. The timer is a bit buggy. suggestions and comments welcome. expandcollapse popup#include <Misc.au3> #Include <GuiEdit.au3> #Include <GuiStatusBar.au3> HotKeySet ("!e","End") $GUI = GUICreate ("Basic Script ~ Writer",250,280) $script = GUICtrlCreateEdit ("there is an inputbox in the status bar with" & @CRLF & "how long you want it to record for. The box" & @CRLF & "next to the is the defult delay after each" & @CRLF & "movement. There is also a Test button to" & @CRLF & "check the Script. It can only move the " & @CRLF & "mouse and sleep. Alt+e also exits",10,10,230,200) $time = GUICtrlCreateInput ("sec",60,260,25,18,$ES_NUMBER) $time2 = GUICtrlCreateInput ("delay",90,260,25,18,$ES_NUMBER) $Exit = GUICtrlCreateButton ("&Exit",170,218,70,30) $Save = GUICtrlCreateButton ("&Save",10,218,70,30) $lines = _GUICtrlEditGetLineCount ($script) $test = GUICtrlCreateButton ("TEST",120,260,40,18) $REC = GUICtrlCreateButton ("&RECORD",85,213,80,40) Local $Parts[3] = [55, 350, -1] Local $Text[3] = ["Lines: " & $lines,"", "Even More Text"] $status = _GUICtrlStatusBarCreate ($GUI,$Parts,$Text) GUICtrlSetColor ($time,0xFF0000) GUICtrlSetColor ($time2,0xFF0000) GUISetBkColor (0xD3D3D3) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $Exit Exit Case $msg = $Save $script = GUICtrlRead ($script) FileWrite (@ScriptDir & "\Script.au3",$script) Sleep (2000) MsgBox (64,"SAVED","Script Saved at " & @ScriptDir & "\Script.au3 <-") Case $msg = $REC IniDelete ("MousePos.ini","Coords") GUICtrlSetData ($Script,"") $time3 = GUICtrlRead ($time) * 1000 $delay = GUICtrlRead ($time2) $lines = _GUICtrlEditGetLineCount ($script) _GUICtrlStatusBarSetText ($status,"Lines: " & $lines,0) $x = 1 $y = 1 $begin = TimerInit() Do Sleep (10) $mouse = MouseGetPos() IniWrite (@ScriptDir & "\MousePos.ini","Coords","x" & $x,$mouse[0]) IniWrite (@ScriptDir & "\MousePos.ini","Coords","y" & $y,$mouse[1]) $x = $x + 1 $y = $y + 1 $dif = TimerDiff ($begin) Until $dif >= $time3 Sleep (1000) $x = 1 $y = 1 $begin = TimerInit() Do Sleep (10) $mousex = IniRead (@ScriptDir & "\MousePos.ini","Coords","x" & $x,$mouse[0]) $mousey = IniRead (@ScriptDir & "\MousePos.ini","Coords","y" & $y,$mouse[1]) ControlSend ("Basic Script ~ Writer","","Edit1","MouseMove ("& $mousex &","& $mousey &",1){ENTER}") ControlSend ("Basic Script ~ Writer","","Edit1","Sleep ("& $delay &"){ENTER}") $x = $y + 1 $y = $y + 1 $lines = _GUICtrlEditGetLineCount ($script) _GUICtrlStatusBarSetText ($status,"Lines: " & $lines,0) $dif = TimerDiff ($begin) Until $dif >= $time3 Case $msg = $test $begin = TimerInit() Do Sleep (10) $mousex = IniRead (@ScriptDir & "\MousePos.ini","Coords","x" & $x,$mouse[0] & "DEFULT") $mousey = IniRead (@ScriptDir & "\MousePos.ini","Coords","y" & $y,$mouse[1] & "DEFULT") MouseMove ($mousex,$mousey,1) $x = $y + 1 $y = $y + 1 $dif = TimerDiff ($begin) Until $dif >= $time3 EndSelect WEnd Func End() Exit EndFunc Edited January 14, 2007 by phantom
Achilles Posted January 14, 2007 Posted January 14, 2007 (edited) Hey, I like your idea, so much so that I added on to it expandcollapse popup#include <GuiConstants.au3> #Include <Misc.au3> #NoTrayIcon Opt("GUICloseOnESC", 1) GuiCreate("Mouse movement recorder/player", 200, 173, -1, -1, $WS_CAPTION, $WS_EX_TOOLWINDOW ) GUISetBkColor (0xA29CFE) $start = GuiCtrlCreateButton("Start Recording", 10, 10, 180, 25) $stop = GuiCtrlCreateButton("Stop Recording", 10, 45, 180, 25) GuiCtrlSetState($stop, $GUI_DISABLE) $prompt = GuiCtrlCreateLabel("If you would like to reconstruct a prior recording click 'Reconstruct'...", 10, 80, 180, 30) $playPrior = GuiCtrlCreateButton("Reconstruct", 10, 115, 180, 25) $exit = GuiCtrlCreateButton("Exit", 10, 145, 180, 25) GuiSetState() While 1 $msg = GuiGetMsg() Select Case $msg = $start GuiCtrlSetState($start, $GUI_DISABLE) GuiCtrlSetState($stop, $GUI_ENABLE) $time = @HOUR & "-" & @MIN & "-" & @SEC & " (time)" Do $pos = MouseGetPos() IniWrite(@DeskTopCommonDir & "\Mouse Positions from " & $time & ".ini", @MON & ":" & @MDAY & ":" & @YEAR, $pos[0], $pos[1]) ; Sleep(20) $msg = GuiGetMsg() If $msg = $exit then Exit Until $msg = $stop GuiCtrlSetState($start, $GUI_ENABLE) GuiCtrlSetState($stop, $GUI_DISABLE) Case $msg = $playPrior $file = FileOpenDialog("Choose a .ini file that contains coordinates from before", @HOMEDRIVE, "(*.ini)", 3) If Not @ERROR Then GuiSetState(@SW_DISABLE) $iniName = IniReadSectionNames($file) $coords = IniReadSection($file, $iniName[1]) GuiCtrlSetData($prompt, "'Esc' exits!'") For $a = 1 to $coords[0][0] MouseMove($coords[$a][0], $coords[$a][1], 4) If _IsPressed("1B") then Exit Next GuiCtrlSetData($prompt, "If you would like to reconstruct a prior recording click 'Reconstruct'...") GuiSetState(@SW_ENABLE) EndIf Case $msg = $exit Exit EndSelect Wend Hope you don't mind, but I like the reconstruct part I added on.... EDIT: Added a GuiSetState(@Enable) and then a disable Edited January 14, 2007 by Piano_Man My Programs[list][*]Knight Media Player[*]Multiple Desktops[*]Daily Comics[*]Journal[/list]
phantom Posted January 15, 2007 Author Posted January 15, 2007 Nice i like what you have done. The gui looks a lot better, mine was a bit messed up and the reconstruct part u add is cool.
fisofo Posted January 16, 2007 Posted January 16, 2007 Nice, interesting little script... if you move the mouse too fast, it tends to skip recording of points (as is to be expected). Oh, and on my third recording, I got this after I clicked stop: !>AutoIT3.exe ended.rc:-1073741819 No idea what that error signifies, but just an fyi. Otherwise it doesn't seem to have issues.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now