Anyone know how to change the mouse to Clicks instead of Mouseclick?
https://www.autohotkey.com/docs/commands/Click.htm
Mouse And Keyboard Macro Recorder
Re: Mouse And Keyboard Macro Recorder
Hello,
In order to create this script Do I copy and past the entire script and then save as a .pmc file.
How to load and run it in PMC?
I am totally new to PMC but I am ok with AHK.
Thanks!
In order to create this script Do I copy and past the entire script and then save as a .pmc file.
How to load and run it in PMC?
I am totally new to PMC but I am ok with AHK.
Thanks!
Re: Mouse And Keyboard Macro Recorder
Why my mouse move too fast when I play back the recorded movement?
Re: Mouse And Keyboard Macro Recorder
You should save it as an .ahk file, as it is an AutoHotkey script. It has nothing to do with PMC.
-
- Posts: 6
- Joined: 21 Feb 2017, 07:30
Re: Mouse And Keyboard Macro Recorder
sorry but i'm pretty new to this
Macro Recorder v2.1 By FeiYue is beautifully simple. but i can't figure out how to put the loop in an actual macro script. i would love if there was an extra "save" button that where i could choose the key to activate the macro and be done with it.
but if anyone would tell me how to bind the loop to a key i would be very greatful.
i tried
but all it did was highlight the windows shortcuts and do the first click. like i had used : rather than :: or something, i thought ahk would handle it differently
Macro Recorder v2.1 By FeiYue is beautifully simple. but i can't figure out how to put the loop in an actual macro script. i would love if there was an extra "save" button that where i could choose the key to activate the macro and be done with it.
but if anyone would tell me how to bind the loop to a key i would be very greatful.
i tried
Code: Select all
F10::
loop, 1
{
;code goes here
}
return
-
- Posts: 1
- Joined: 14 Nov 2020, 01:22
Re: Mouse And Keyboard Macro Recorder
How can i loop this script countless times? Thank you!
-
- Posts: 4
- Joined: 13 Oct 2021, 01:16
Re: Mouse And Keyboard Macro Recorder
this is great but it repeats the process very fast so it is necessary to add a "sleep" after every recording.
-
- Posts: 1
- Joined: 08 Nov 2021, 05:33
Re: Mouse And Keyboard Macro Recorder
Which line can I adjust the playback speed? I find the recorder plays it back about 3x the speed in which I recorded.
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
feiyue wrote: ↑11 Mar 2020, 23:24Updated to 2.1 version - 2020/03/12
1. Put the record file in the temporary folder to avoid that some computers cannot generate the record file.
2. Record the actual delay instead of a uniform delay of 0.5 seconds.
... Note: if the actual delay is large, please modify the record file yourself.
3. I added "Loop, 1 {...}" statement at the beginning and end of the record file,
... You can modify the number of loops by yourself. For infinite loops, you can use "Loop {".
Re: Mouse And Keyboard Macro Recorder
Thank you so much @feiyue! I created a forum account just to comment here!
I tried Pulover's Macro Creator but it wasn't working for me. All I want to do is occasional on-the-fly macro recording, with a single key for recording and playback and no GUI interaction required (a GUI is great for learning, but I do not want to have to move my mouse to click on anything). I think PMC should do that with the "Hotkeys Always Active" and "Clear List" options enabled, but for some reason it would never erase the existing script unless I manually deleted it with the GUI, and after several hours of effort and YouTube videos I finally gave up. I am a new user and really appreciate you trying to keep it simple.
In any case, I have some feedback for your script if you're interested:
I tried Pulover's Macro Creator but it wasn't working for me. All I want to do is occasional on-the-fly macro recording, with a single key for recording and playback and no GUI interaction required (a GUI is great for learning, but I do not want to have to move my mouse to click on anything). I think PMC should do that with the "Hotkeys Always Active" and "Clear List" options enabled, but for some reason it would never erase the existing script unless I manually deleted it with the GUI, and after several hours of effort and YouTube videos I finally gave up. I am a new user and really appreciate you trying to keep it simple.
In any case, I have some feedback for your script if you're interested:
- It would help me if the screen tip that currently says "Recording" and "Playing" could additionally say "Recording (Paused)" and "Playing (Paused)".
- Could you add a note in the script on how to turn off the GUI? Once I've memorized the hotkeys I'd like to disable it, but I'm not sure how to make that change.
- Could your script rename the Pause label to something like LabelPause? I tried replacing F6 on line 196 with Pause so I could use the Pause key on my keyboard (I need F6 for its existing function). But when starting the script I get this error:
I think it's a an issue with the you having a label named Pause, which is the same name Autohotkey uses for Pause from the keyboard.Error at line 197.
Line text: Pause
Error: Duplicate label.
The program will now exit.
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
I like the script the way it is now. Simple and easy to use.
Cheers
Cheers
Last edited by SpeedMaster on 19 Mar 2023, 12:39, edited 1 time in total.
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
Here is the way I use when I run the script from my main script.
Be careful to put these shortcuts in your main script and not in the macro recorder script and adapt the file path as needed. "C:\MouseAndKeyboardMacroRecorder.ahk"
Shortcuts:
Win + F1 ................... Start visible
Win + F2 ................... Start hidden
Code: Select all
; start visible
#f1::
run, C:\MouseAndKeyboardMacroRecorder.ahk
sleep, 500
WinShow, Macro Recorder
return
;start hidden
#f2::
run, C:\MouseAndKeyboardMacroRecorder.ahk
sleep, 800
WinHide, Macro Recorder
return
just do that...
Code: Select all
Pause::
;pause:
Code: Select all
UsedKeys:="F1,F2,F3,F4,F5,Pause"
s:="[F1]Record(Screen),[F2]Record(Window),"
. "[F3]Stop,[F4]Play,[F5]Edit,[Pause]Pause "
Re: Mouse And Keyboard Macro Recorder
Any one knows how to remove app and window detections? I just want eveything else like Click, keyboard, Sleep. In apps I use this it is a mess to clean it by removing all detected windows which are diffrent next time I run my scripts. So it is useless for me due to restrictions in my system.
I appreciate any input.
I appreciate any input.
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
Last edited by SpeedMaster on 19 Mar 2023, 12:42, edited 1 time in total.
Re: Mouse And Keyboard Macro Recorder
@SpeedMaster
Thanks.
When I do recording and run this code after, I get warning:
This variable has not been assigned a value.
Specifically: LoFie (Aglobal variable)
....> Loop, read, % LogFile, % LogFile2
I am sure im doing something wrong.
Thanks.
When I do recording and run this code after, I get warning:
This variable has not been assigned a value.
Specifically: LoFie (Aglobal variable)
....> Loop, read, % LogFile, % LogFile2
I am sure im doing something wrong.
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
I hope this will work.
Last edited by SpeedMaster on 19 Mar 2023, 12:45, edited 1 time in total.
Re: Mouse And Keyboard Macro Recorder
@SpeedMaster
Didn't work.
Might be because I use the Windows Store edition of ahk? Can't acces it s folder tho.
No other direct way like removing some of the original code in this script?
Didn't work.
Might be because I use the Windows Store edition of ahk? Can't acces it s folder tho.
No other direct way like removing some of the original code in this script?
- SpeedMaster
- Posts: 494
- Joined: 12 Nov 2016, 16:09
Re: Mouse And Keyboard Macro Recorder
you can try to disable the call to the LogWindow() function in the script
disable the corresponding line like that:
Code: Select all
LogWindow:
;LogWindow()
return
Re: Mouse And Keyboard Macro Recorder
@SpeedMaster
Wow, thanks, it worked! Saved me alot!
Wow, thanks, it worked! Saved me alot!
Code: Select all
;-----------------------------------
; Macro Recorder v2.1 By FeiYue
;
; Description: This script records the mouse
; and keyboard actions and then plays back.
;
; F1 --> Record(Screen) (CoordMode, Mouse, Screen)
; F2 --> Record(Window) (CoordMode, Mouse, Window)
; F3 --> Stop Record/Play
; F4 --> Play LogFile
; F5 --> Edit LogFile
; F6 --> Pause Record/Play
;
; Note:
; 1. press the Ctrl button individually
; to record the movement of the mouse.
; 2. Shake the mouse on the Pause button,
; you can pause recording or playback.
;-----------------------------------
#NoEnv
SetBatchLines, -1
Thread, NoTimers
CoordMode, ToolTip
SetTitleMatchMode, 2
DetectHiddenWindows, On
;--------------------------
LogFile:=A_Temp . "\~Record.txt"
UsedKeys:="F1,F2,F3,F4,F5,F6"
Play_Title:=RegExReplace(LogFile,".*\\") " ahk_class AutoHotkey"
;--------------------------
Gui, +AlwaysOnTop -Caption +ToolWindow +E0x08000000 +Hwndgui_id
Gui, Margin, 0, 0
Gui, Font, s12
s:="[F1]Record(Screen),[F2]Record(Window),"
. "[F3]Stop,[F4]Play,[F5]Edit,[F6] Pause "
For i,v in StrSplit(s, ",")
{
j:=i=1 ? "":"x+0", j.=InStr(v,"Pause") ? " vPause":""
Gui, Add, Button, %j% gRun, %v%
}
Gui, Add, Button, x+0 w0 Hidden vMyText
Gui, Show, NA y0, Macro Recorder
OnMessage(0x200,"WM_MOUSEMOVE")
;--------------------------
SetTimer, OnTop, 2000
OnTop:
Gui, +AlwaysOnTop
return
Run:
if IsLabel(k:=RegExReplace(RegExReplace(A_GuiControl,".*]"),"\W"))
Goto, %k%
return
WM_MOUSEMOVE() {
static OK_Time
ListLines, Off
if (A_Gui=1) and (A_GuiControl="Pause")
and (t:=A_TickCount)>OK_Time
{
OK_Time:=t+500
Gosub, Pause
}
}
ShowTip(s:="", pos:="y35", color:="Red|00FFFF") {
static bak, idx
if (bak=color "," pos "," s)
return
bak:=color "," pos "," s
SetTimer, ShowTip_ChangeColor, Off
Gui, ShowTip: Destroy
if (s="")
return
; WS_EX_NOACTIVATE:=0x08000000, WS_EX_TRANSPARENT:=0x20
Gui, ShowTip: +LastFound +AlwaysOnTop +ToolWindow -Caption +E0x08000020
Gui, ShowTip: Color, FFFFF0
WinSet, TransColor, FFFFF0 150
Gui, ShowTip: Margin, 10, 5
Gui, ShowTip: Font, Q3 s20 bold
Gui, ShowTip: Add, Text,, %s%
Gui, ShowTip: Show, NA %pos%, ShowTip
SetTimer, ShowTip_ChangeColor, 1000
ShowTip_ChangeColor:
Gui, ShowTip: +AlwaysOnTop
r:=StrSplit(SubStr(bak,1,InStr(bak,",")-1),"|")
Gui, ShowTip: Font, % "Q3 c" r[idx:=Mod(Round(idx),r.length())+1]
GuiControl, ShowTip: Font, Static1
return
}
;============ Hotkey =============
F1::
Suspend, Permit
Goto, RecordScreen
F2::
Suspend, Permit
Goto, RecordWindow
RecordScreen:
RecordWindow:
if (Recording or Playing)
return
Coord:=InStr(A_ThisLabel,"Win") ? "Window":"Screen"
LogArr:=[], oldid:="", Log(), Recording:=1, SetHotkey(1)
ShowTip("Recording")
return
F3::
Stop:
Suspend, Permit
if Recording
{
if (LogArr.MaxIndex()>0)
{
s:="`nLoop, 1`n{`n`nSetTitleMatchMode, 2"
. "`nCoordMode, Mouse, " Coord "`n"
For k,v in LogArr
s.="`n" v "`n"
s.="`nSleep, 1000`n`n}`n"
s:=RegExReplace(s,"\R","`n")
FileDelete, %LogFile%
FileAppend, %s%, %LogFile%
s:=""
}
SetHotkey(0), Recording:=0, LogArr:=""
}
else if Playing
{
WinGet, list, List, %Play_Title%
Loop, % list
if WinExist("ahk_id " list%A_Index%)!=A_ScriptHwnd
{
WinGet, pid, PID
WinClose,,, 3
IfWinExist
Process, Close, %pid%
}
SetTimer, CheckPlay, Off
Playing:=0
}
ShowTip()
Suspend, Off
Pause, Off
GuiControl,, Pause, % "[F6] Pause "
isPaused:=0
return
F4::
Play:
Suspend, Permit
if (Recording or Playing)
Gosub, Stop
ahk:=A_IsCompiled ? A_ScriptDir "\AutoHotkey.exe" : A_AhkPath
IfNotExist, %ahk%
{
MsgBox, 4096, Error, Can't Find %ahk% !
Exit
}
Run, %ahk% /r "%LogFile%"
SetTimer, CheckPlay, 500
Gosub, CheckPlay
return
CheckPlay:
Check_OK:=0
WinGet, list, List, %Play_Title%
Loop, % list
if (list%A_Index%!=A_ScriptHwnd)
Check_OK:=1
if Check_OK
Playing:=1, ShowTip("Playing")
else if Playing
{
SetTimer, CheckPlay, Off
Playing:=0, ShowTip()
}
return
F5::
Edit:
Suspend, Permit
Gosub, Stop
Run, notepad.exe "%LogFile%"
return
F6::
Pause:
Suspend, Permit
if Recording
{
Suspend
Pause, % A_IsSuspended ? "On":"Off", 1
isPaused:=A_IsSuspended, Log()
}
else if Playing
{
isPaused:=!isPaused
WinGet, list, List, %Play_Title%
Loop, %list%
if WinExist("ahk_id " list%A_Index%)!=A_ScriptHwnd
PostMessage, 0x111, 65306
}
else return
if isPaused
GuiControl,, Pause, [F6]<Pause>
else
GuiControl,, Pause, % "[F6] Pause "
return
;============ Functions =============
SetHotkey(f:=0) {
; These keys are already used as hotkeys
global UsedKeys
f:=f ? "On":"Off"
Loop, 254
{
k:=GetKeyName(vk:=Format("vk{:X}", A_Index))
if k not in ,Control,Alt,Shift,%UsedKeys%
Hotkey, ~*%vk%, LogKey, %f% UseErrorLevel
}
For i,k in StrSplit("NumpadEnter|Home|End|PgUp"
. "|PgDn|Left|Right|Up|Down|Delete|Insert", "|")
{
sc:=Format("sc{:03X}", GetKeySC(k))
if k not in ,Control,Alt,Shift,%UsedKeys%
Hotkey, ~*%sc%, LogKey, %f% UseErrorLevel
}
; SetTimer, LogWindow, %f%
; if (f="On")
; Gosub, LogWindow
}
LogKey:
LogKey()
return
;LogWindow:
;LogWindow()
return
LogKey() {
Critical
k:=GetKeyName(vksc:=SubStr(A_ThisHotkey,3))
k:=StrReplace(k,"Control","Ctrl"), r:=SubStr(k,2)
if r in Alt,Ctrl,Shift,Win
LogKey_Control(k)
else if k in LButton,RButton,MButton
LogKey_Mouse(k)
else
{
if (k="NumpadLeft" or k="NumpadRight") and !GetKeyState(k,"P")
return
k:=StrLen(k)>1 ? "{" k "}" : k~="\w" ? k : "{" vksc "}"
Log(k,1)
}
}
LogKey_Control(key) {
global LogArr, Coord
k:=InStr(key,"Win") ? key : SubStr(key,2)
if (k="Ctrl")
{
CoordMode, Mouse, %Coord%
MouseGetPos, X, Y
}
Log("{" k " Down}",1)
Critical, Off
KeyWait, %key%
Critical
Log("{" k " Up}",1)
if (k="Ctrl")
{
i:=LogArr.MaxIndex(), r:=LogArr[i]
if InStr(r,"{Blind}{Ctrl Down}{Ctrl Up}")
LogArr[i]:="MouseMove, " X ", " Y
}
}
LogKey_Mouse(key) {
global gui_id, LogArr, Coord
k:=SubStr(key,1,1)
CoordMode, Mouse, %Coord%
MouseGetPos, X, Y, id
if (id=gui_id)
return
Log("MouseClick, " k ", " X ", " Y ",,, D")
CoordMode, Mouse, Screen
MouseGetPos, X1, Y1
t1:=A_TickCount
Critical, Off
KeyWait, %key%
Critical
t2:=A_TickCount
if (t2-t1<=200)
X2:=X1, Y2:=Y1
else
MouseGetPos, X2, Y2
i:=LogArr.MaxIndex(), r:=LogArr[i]
if InStr(r, ",,, D") and Abs(X2-X1)+Abs(Y2-Y1)<5
LogArr[i]:=SubStr(r,1,-5), Log()
else
Log("MouseClick, " k ", " (X+X2-X1) ", " (Y+Y2-Y1) ",,, U")
}
;LogWindow() {
; global oldid, LogArr
; static oldtitle
; id:=WinExist("A")
; WinGetTitle, title
; WinGetClass, class
; if (title="" and class="")
; return
; if (id=oldid and title=oldtitle)
; return
; oldid:=id, oldtitle:=title
; title:=SubStr(title,1,50)
; if (!A_IsUnicode)
; {
; GuiControl,, MyText, %title%
; GuiControlGet, s,, MyText
; if (s!=title)
; title:=SubStr(title,1,-1)
; }
; title.=class ? " ahk_class " class : ""
; title:=RegExReplace(Trim(title), "[``%;]", "``$0")
; s:="tt = " title "`nWinWait, %tt%"
; . "`nIfWinNotActive, %tt%,, WinActivate, %tt%"
; i:=LogArr.MaxIndex(), r:=LogArr[i]
; if InStr(r,"tt = ")=1
; LogArr[i]:=s, Log()
; else
; Log(s)
;}
Log(str:="", Keyboard:=0) {
global LogArr
static LastTime
t:=A_TickCount, Delay:=(LastTime ? t-LastTime:0), LastTime:=t
IfEqual, str,, return
i:=LogArr.MaxIndex(), r:=LogArr[i]
if (Keyboard and InStr(r,"Send,") and Delay<1000)
{
LogArr[i]:=r . str
return
}
if (Delay>200)
LogArr.Push("Sleep, " (Delay//2))
LogArr.Push(Keyboard ? "Send, {Blind}" str : str)
}
;============ The End ============
;
Re: Mouse And Keyboard Macro Recorder
@SpeedMaster
You didn't happen to know the answer of this above question too?
Anyone know how to change the mouse to Clicks instead of Mouseclick?
https://www.autohotkey.com/docs/commands/Click.htm
Click is just so much cleaner for the code than MouseClick, L. After all records I do this by find and replace, and removing empty lines which take twice the space.
You didn't happen to know the answer of this above question too?
Anyone know how to change the mouse to Clicks instead of Mouseclick?
https://www.autohotkey.com/docs/commands/Click.htm
Click is just so much cleaner for the code than MouseClick, L. After all records I do this by find and replace, and removing empty lines which take twice the space.
Return to “Scripts and Functions (v1)”
Who is online
Users browsing this forum: No registered users and 107 guests