FunkyBunnies Posted April 14, 2009 Share Posted April 14, 2009 Hey all, I was toying with an idea using a captured mouse action and I was wondering if you guys had any ideas? Basically to click and drag and have autoit recreate this mouse stroke. I'm aware of AU3Record.exe in AutoIt3\SciTE\ScriptWriter so I imagine it's possible, but I'm not sure how one would go about it? Link to comment Share on other sites More sharing options...
Authenticity Posted April 14, 2009 Share Posted April 14, 2009 (edited) Probably using a low-level mouse hook procedure and a temporary file or variable. For example you can do something like this in the hook procedure: expandcollapse popupGlobal Const $tagMSLLHOOKSTRUCT = _ $tagPOINT & ';dword mouseData;' & _ 'dword flags;' & _ 'dword time;' & _ 'ulong_ptr dwExtraInfo' Global $sWrite = '' Global $fClicked = False Global $iX1 = 0, $iY1 = 0 Global $iX2 = -1, $iY2 = -1 Global $hFile = FileOpen($sFile, 2) . . . Func MouseHook($iCode, $iwParam, $ilParam) Local $tMSLLHOOKSTRUCT Local $iX, $iY If $iCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $iCode, $iwParam, $ilParam) EndIf $tMSLLHOOKSTRUCT = DllStructCreate($tagMSLLHOOKSTRUCT, $ilParam) $iX = DllStructGetData($tMSLLHOOKSTRUCT, 'X') $iY = DllStructGetData($tMSLLHOOKSTRUCT, 'Y') Switch $iwParam Case $WM_MOUSEMOVE If $fClicked Then $iX2 = $iX $iY2 = $iY Else $iX2 = -1 $iY2 = -1 EndIf Case $WM_LBUTTONDOWN $fClicked = True $iX1 = $iX $iY1 = $iY $iX2 = -1 $iY2 = -1 Case $WM_LBUTTONUP $fClicked = False If $iX2 = -1 Then $sWrite = 'MouseClick("left", ' & $iX & ', ' & $iY & ')' Else $sWrite = 'MouseClickDrag("left", ' & $iX1 & ', ' & $iY1 & ', ' & $iX2 & ', ' & $iY2 & ')' EndIf FileWrite($hFile, $sWrite & @CRLF) EndSwitch Return _WinAPI_CallNextHookEx($hHook, $iCode, $iwParam, $ilParam) EndFunc The hook procedure is not notified about WM_LBUTTONDBLCLK or WM_RBUTTONDBLCLK so you need to use GetDoubleClickTime to get this value and see if it's a double click event. If so you'll need to previously write to the variable a MouseClick for example with 1 click but change it to 2 if it's a double click event. Edited April 14, 2009 by Authenticity Link to comment Share on other sites More sharing options...
FunkyBunnies Posted April 16, 2009 Author Share Posted April 16, 2009 Awesome, thanks for the help Authenticity I'll play around with it Link to comment Share on other sites More sharing options...
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