【鼠标键盘录像机】 v2.1
来源:互联网 发布:有声漫画软件 编辑:程序博客网 时间:2024/04/28 17:08
这是一个简单的鼠标键盘录像机,比 AHK 自带的 AutoScriptWriter.exe 好用些。
;--------------------------------------; 【鼠标键盘录像机】 v2.1 By FeiYue;; 此脚本属于傻瓜型自动化脚本生成器,比; AHK自带的 AutoScriptWriter.exe 好用些;; 使用说明:;; 1、录像时点击或拖动迷你窗口不会被记录;; 2、自动记录鼠标、键盘操作和当前窗口;; 3、单击左下角Ctrl键可以记录鼠标移动;; 4、若要使用绝对坐标,可将脚本自动执行; 段中两处 ;CoordMode, Mouse 分号取消;--------------------------------------#NoEnvSuspend, OnMenu, Tray, AddMenu, Tray, Add, 显示隐藏窗口Menu, Tray, Default, 显示隐藏窗口Menu, Tray, Click, 1;---------------------Gui, +LastFound +AlwaysOnTop -MinimizeBox +Owner +Hwndgui_id +E0x08000000Gui, Margin, 20, 20Gui, Font, s12Gui, Add, Button, g开始或暂停录像, 开始|暂停Gui, Add, Button, x+0 g查看及修改记录, 查看Gui, Add, Button, x+0 g保存脚本, 保存Gui, Add, Button, x+0 g运行脚本, 运行Gui, Show, NA, 鼠标键盘录像机OnMessage(0x201, "WM_LBUTTONDOWN"); 取消这两处的分号可以记录绝对坐标;CoordMode, MouseRunFileAdd := ";CoordMode, Mouse"ReturnWM_LBUTTONDOWN() ; 迷你窗口的空白位置也可拖动{ ListLines, Off if (A_Gui=1 and A_GuiControl="") PostMessage, 0xA1, 2}GuiClose:Gui, Hideif !A_IsSuspended Gosub, 开始或暂停录像Return显示隐藏窗口:IfWinExist, ahk_id %gui_id% Gosub, GuiCloseelse Gui, Show, NAReturn开始或暂停录像:SuspendSetHotkey(!A_IsSuspended)SetTimer, 抓取当前窗口, % !A_IsSuspended ? 100:"Off", -10Gui, Show, NA, % "鼠标键盘录像机" . (!A_IsSuspended ? "【录像中】":"")Return抓取当前窗口:ListLines, OffCriticalif (MouseOnGui) and GetKeyState("LButton","P") ReturnMouseGetPos,,, mouse_idMouseOnGui:=(mouse_id=gui_id)if !MouseOnGui{ id:=WinExist("A") if (id=oldid) Return WinGetTitle, tt WinGetClass, tc if (tt="" and tc="") Return oldid:=id WinGetText, txt tx:="", len:=0 Loop, Parse, txt, `n, `r if StrLen(v:=Trim(A_LoopField))>len tx:=v, len:=StrLen(v) IfWinNotExist, ahk_id %id%, %tx% tx= ; 截短标题及文本,并纠正Ansi版失误 tt:=cut(tt), tx:=cut(tx) ; 代码化修正标题及文本 tt:=zhuanyi(tt), tx:=zhuanyi(tx) tt.=tc="" ? "" : " ahk_class " tc tt.=tx="" ? "" : """, % """ tx log(), logs.="WinWait, % """ tt """`nIfWinNotActive" . ",,, WinActivate`nWinWaitActive`nSleep, 500`n"}Returncut(s,n=50) { s:=SubStr(s,1,50) Gui, 22:Destroy Gui, 22:Add, Edit GuiControl, 22:, Edit1, %s% GuiControlGet, r, 22:, Edit1 Gui, 22:Destroy Return, r=s ? s : SubStr(s,1,-1)}zhuanyi(s) { s:=RegExReplace(s,"[``""]","$0$0") Return, StrReplace(s,";","```;")}查看及修改记录: ; 可查看、修改当前记录和运行脚本Suspend, Permitif !A_IsSuspended Gosub, 开始或暂停录像log()Gui, +DisabledGui, 11:DestroyGui, 11:+LastFound +AlwaysOnTop -MinimizeBox +Owner1Gui, 11:Font, s12 cBlueGui, 11:Add, Button, w250 gChangeGui, 11:Add, Button, x+0 wp gViewGui, 11:Add, Button, x+0 wp gClear, 清空(可恢复)Gui, 11:Add, Edit, xm w750 h500 HScroll -WrapGui, 11:Show,, 查看及修改【当前记录】Gui, 11:DefaultGosub, ViewGui, 1:DefaultWinWaitClose, % "ahk_id " WinExist()Gui, 11:DestroyGui, -DisabledReturnChange:GuiControlGet, r,, Button1if InStr(r,"当前记录"){ GuiControlGet, logs,, Edit1 oldid:=logs="" ? "":oldid}else{ GuiControlGet, s,, Edit1 f=%A_Temp%\~test1.tmp FileDelete, %f% FileAppend, %s%, %f% s=}Gui, HideReturnView:GuiControlGet, r,, Button1if InStr(r,"当前记录"){ f=%A_Temp%\~test1.tmp FileRead, s, %f% GuiControl,, Button1, 保存运行脚本的修改 GuiControl,, Button2, 运行脚本—>当前记录 Gui, Show,, 查看及修改【运行脚本】}else{ s:=logs GuiControl,, Button1, 保存当前记录的修改 GuiControl,, Button2, 当前记录—>运行脚本 Gui, Show,, 查看及修改【当前记录】}GuiControl,, Edit1, %s%GuiControl, Focus, Edit1s=ReturnClear:GuiControlGet, s,, Edit1if s= s:=clearselse clears:=s, s:=""GuiControl,, Edit1, %s%GuiControl, Focus, Edit1s=Return保存脚本: ; 保存当前记录到运行脚本,并清空记录Suspend, Permitif !A_IsSuspended Gosub, 开始或暂停录像Gui, +OwnDialogsMsgBox, 4100, 确认替换 , 要保存当前记录到运行脚本吗?`n`n可以先查看、修改当前记录。Gui, HideGui, Show, NAIfMsgBox, Yes log()else Returnf=%A_Temp%\~test1.tmp ; 回放的脚本可以按【Pause】暂停logs:="#NoEnv`n#SingleInstance force`n" RunFileAdd . "`n`n" logs "`nReturn`n`nPause:: Pause`n"FileDelete, %f%FileAppend, %logs%, %f%logs:=oldid:=""Return运行脚本: ; 运行上次保存的运行脚本Suspend, Permitif !A_IsSuspended Gosub, 开始或暂停录像f=%A_Temp%\~test1.tmpIfExist, %f% Run, %A_AhkPath% /r /f "%f%",, UseErrorLevelReturn;----------------------------------SetHotkey(f:=1) { ; 设定所有热键 static allkeys, filter:="" ; 可以过滤已使用的热键,以逗号分隔 if allkeys= { ; 过滤会与LShift、LControl、LAlt等冲突的 s:="|Shift|Control|Alt||" ; 补上主键盘与小键盘虚拟按键码相同导致遗漏的 s.="|Home|End|PgUp|PgDn|Left|Right|Up|Down|Ins|Del|NumpadEnter|" Loop, 254 { k:=GetKeyName("vk" . Format("{:02X}",A_Index)) if StrLen(k)=1 StringLower, k, k s.=InStr(s,"|" k "|") ? "" : k "|" } s:=Trim(SubStr(s,InStr(s,"||")),"|") allkeys:=RegExReplace(s,"Control","Ctrl") } f:=f ? "On":"Off" Loop, Parse, allkeys, | ; if A_LoopField not in %filter% Hotkey, ~*%A_LoopField%, LogKey, %f% UseErrorLevel}LogKey: ; 响应热键IfEqual, MouseOnGui, 1, ReturnCriticalk:=SubStr(A_ThisHotkey,3); 这些键采用独立标签可以避免多线程变量污染if k contains Shift,Ctrl,Alt,Win,Button if IsLabel(k) Goto, %k%; 处理QQ中文输入法自动发送左右键来调整光标的情况if (k="NumpadLeft"||k="NumpadRight") and !GetkeyState(k,"P") Returnlog(k="``"||k=";" ? "```" k : StrLen(k)=1 ? k : "{" k "}")ReturnLShift:RShift:LCtrl: ; 单击左下角Ctrl键,可以记录鼠标移动RCtrl:LAlt:RAlt:LWin:RWin:log("{" k " Down}")Critical, OffKeyWait, %A_ThisLabel%Criticalk:=A_ThisLabellog("{" k " Up}")if (k="LCtrl") and InStr(A_ThisHotkey,k){ MouseGetPos, mx, my logs.="`nSleep, 100`nMouseMove, " . mx ", " my "`nSleep, 100`n" re:="i)Send, \{LCtrl Down\}(`nSleep, 100`n" . "Send, )?\{LCtrl Up\}`nSleep, 100`n" logs:=RegExReplace(logs,re)}ReturnLButton:RButton:MButton:MouseGetPos, mx, my ; 按下时可采用相对坐标CoordMode, MouseMouseGetPos, %k%x, %k%y%k%x-=mx, %k%y-=mylog("MouseClick, " SubStr(k,1,1) ", " mx ", " my ",,, D")Critical, OffKeyWait, %A_ThisLabel%Criticalk:=A_ThisLabelMouseGetPos, mx, my ; 松开时采用绝对坐标,以免窗口有变化mx-=%k%x, my-=%k%ylog("MouseClick, " SubStr(k,1,1) ", " mx ", " my ",,, U")Returnlog(k:="") { ; 记录函数 global logs s:=SubStr(logs,InStr(logs,"`n",0,0)+1) ; 获取末行数据 if k= ; 添加延时 { SetTimer, SendOK, Off logs.= s="" ? "" : "`nSleep, 100`n" } else if InStr(k,"MouseClick") ; 原地点击则合并按下弹起 { StringSplit, a, s, `,, %A_Space% StringSplit, b, k, `,, %A_Space% if InStr(s,"MouseClick")=1 and (a7="D" and b7="U") and (a2=b2) and Abs(a3-b3)+Abs(a4-b4)< 5 logs:=SubStr(logs,1,-5) "`nSleep, 100`n" else log(), logs.=k } else { if InStr(s,"Send")=1 and StrLen(s)< 50 logs.=k else log(), logs.="Send, " k SetTimer, SendOK, 1000 } Return SendOK: log() Return};------------ 脚本结束 ------------;
阅读全文
0 0
- 【鼠标键盘录像机】 v2.1
- 山东中煤提供防爆计算机|防爆电脑|防爆键盘鼠标|防爆显示器防爆录像机
- USB硬件 键盘鼠标控制器 V2.0 支持二次开发
- USB硬件键盘鼠标控制器V2.0 支持Linxu
- 鼠标键盘控制器V2.0鼠标连点功能测试报告(硬件级别的测试)
- 鼠标键盘
- 项目1----------写自己的android录像机
- 监控键盘鼠标
- 鼠标、键盘模拟技术
- 锁定键盘和鼠标
- 模拟鼠标/键盘
- 鼠标键盘购买记
- 鼠标键盘模拟技术
- 键盘与鼠标钩子
- 键盘鼠标发声器 是什么
- 键盘鼠标事件
- 键盘鼠标 快捷键
- 获取键盘鼠标信息
- 屏幕抓字生成字库工具与找字函数 v5.6
- 数字签名算法DSA
- 程序加密启动 v2.6
- 在屏幕顶部居中显示当前时间
- 强大的老板键【中键隐藏并静音】
- 【鼠标键盘录像机】 v2.1
- 一个实用的AHK软件【语音数字】
- 注册码生成器 v2.2
- IDL语言的几个要点回顾
- Zookeeper 学习(粗略,仅供了解)
- Mysql之性能优化
- AS快捷键
- 适配器模式浅析
- 《七点三刻》031期 冷空气来袭/老赖专属铃声/“怼”字入选年度汉语盘点…