传奇广告查询第一站 同步gm1.com

如何编写AutoHotKey的脚本
原创 于2026-01-05 18:07:00发布
3 阅读
0
0

上篇文章介绍了AutoHotKey的基本功能和大致模块,这次用一个简单的例子来说说AutoHotKey的脚本编写。和流行的自动化测试工具一样,可以通过录制在编写脚本,也可以直接手工写脚本。但是对于GUI的应用程序来说,基本上都需要录制操作,生成针对记录游历过的对象或坐标的脚本。AutoHotKey功能相对简单,基本上只记录坐标,少数对于Window的操作是用对象表示的,相当于流行自动化测试工具中的低级录制。

下面就是我用AutoHotKey中的AutoScriptWriter (recorder)录制打开桌面坐下方“Quick Launch”栏中的IE浏览器,然后在地址栏中直接输入www.google.com,然后回车,在google的搜索中输入test,在回车的一个过程。

---------

WinWait, ,
IfWinNotActive, , , WinActivate, ,
WinWaitActive, ,
MouseClick, left, 125, 22
Sleep, 100
WinWait, Blank Page - Windows Internet Explorer,
IfWinNotActive, Blank Page - Windows Internet Explorer, , WinActivate, Blank Page - Windows Internet Explorer,
WinWaitActive, Blank Page - Windows Internet Explorer,
Send, www.google.com{ENTER}
WinWait, Google - Windows Internet Explorer,
IfWinNotActive, Google - Windows Internet Explorer, , WinActivate, Google - Windows Internet Explorer,
WinWaitActive, Google - Windows Internet Explorer,
Send, test{ENTER}
WinWait, test - Google Search - Windows Internet Explorer,
IfWinNotActive, test - Google Search - Windows Internet Explorer, , WinActivate, test - Google Search - Windows Internet Explorer,
WinWaitActive, test - Google Search - Windows Internet Explorer,
MouseClick, left, 1016, 13
Sleep, 100

--------------

大家可以看到输入用Send, <字符>表示,点击为MouseClick, left, , 。至于很多的IfWinNotActive类似于测试工具中的同步语句。因为坐标经常会变,所以如果能用按键的尽量用按键,避免坐标。象上面的Enter其实是可以用鼠标点击“Google search”按钮来实现的,但保险起见用Enter键更好。

AutoHotKey也提供比较好的脚本语言,还是和vbscript比较相似。很好学习,可以打开AutoHotkey Help File来查找。经过简单的修改后,脚本如下:

--------------

Run %A_ProgramFiles%/Internet Explorer/iexplore.exe ; start IE browser
Sleep 5000 ; wait launch IE browser
Send, www.google.com{ENTER} ; input google's website in address bar
Sleep 5000 ; wait open google's home page
Send, test{ENTER} ; input keyword in search field
Sleep 5000 ; wait search result
MouseClick, left, 1016, 13 ; click x button to close IE window

--------------

在上面的脚本我用Sleep来同步操作,其实还有很多别的方法,例如WaitObject语句就是通过等待某个区域或点的颜色为期望的颜色时执行下一步操作,还有类似等待某个图片的。由于不提供针对对象的,其他的方式不是太灵活而且太多地方需要使用,也就没有采用。对于一些比较重要的地方,可以使用如下方法

Loop, 5
{
IfWinExist, Save As ; check whether Save As dialogbox exists
break
else
sleep %ShortSleepTime%
}

关闭窗口也可以用WinClose, A来关闭当前活动的窗口。类似还有很多的这样的语句,就和以前写代码一样,唯一的就是没发现可以调用其他的脚本,只能在当前脚本内有效。不过自己本来就不是正道使用,呵呵。

先说到这,有兴趣的朋友可以一起探讨。

管理员
0
0
0
分享
上一篇: 屏幕抖动脚本
下一篇: 分享一个编写传奇封外挂(反外挂)系统的完成过程 - 线程监测篇[原创]
评论
历史记录
回顶部
浏览时间 游戏名称 游戏IP 开区网址
注册1GM论坛账号
  • 上传头像
注册

已有账号,

微信扫码登录
重置密码
重置密码

注册

绑定关联手机号
关联手机号