一、资料来源
编辑工具推荐:SciTE4AutoHotkey 详情介绍及下载
二、AHK入门
AutoHotkey程序部件介绍:
檔案名稱 | 功能說明 |
---|---|
AutoHotkey.exe、AutoHotkey.chm | AutoHotkey的主程式與說明檔。AutoHotkey.chm具有搜尋功能,是很好的學習參考文件 |
AU3_Spy.exe | Active Window Info,顯示視窗系統訊息的小工具,這些訊息對進階的腳本撰寫很有幫助 |
SmartGUI.exe | 用拖拉的方法來定義視窗與其內的各種視覺元件,最後產生的腳本檔。這個工具可以說是一個程式產生器 |
AutoScriptWriter.exe | 一樣是個產生AutoHotkey腳本檔的產生器,不過是採取錄製鍵盤與滑鼠操作過程的方法來產生腳本內容 |
Ahk2Exe.exe | 把腳本檔產生成執行檔的工具,以方便沒有安裝AutoHotkey系統的環境能用執行檔直接執行。 Ahk2Exe.exe是命令列指令,語法如下: Ahk2exe.exe /in "test1.ahk" /icon "test1.ico" |
1、运行程序或打开文件
- 运行程序 Run t命令或者函数用来运行外部可执行文件,AHK还可利用它来直接打开文件。
Run, 目标文件 [, 工作目录, Max|Min|Hide|UseErrorLevel, 输出PID变量],具体可以参与autohotkey的帮助。
如:Run, Notepad.exe, , Max - 打开文件 AHK脚本中可直接给出目标文件,AHK将自动运行该文件的关联程序来打开它;
如:Run, MyFile.txt - 以命令行形式运行程序 可以考虑运行系统的命令行解释器(cmd.exe/command.com),然后指定要执行的命令并传递参数。
如:Run, %ComSpec% /k dir C:\WINDOWS\system32 - 特殊应用
- 打开网页,
如:Run, www.autohotkey.com - 打开特殊文件夹
系统的某些特殊文件夹被定义了相应的CLSID(请查看帮助文档),我们可利用它来打开相应的文件夹,比如打开回收站:
如:Run ::{645ff040-5081-101b -9f 08-00aa 002f 954e} - 运行控制面板工具
微软已经为我们提供了通过命令行打开控制面板某个工具或项目的方式,
比如打开系统属性窗口:Run control sysdm.cpl - 指定搜索位置并打开搜索窗口
假设我们要打开一个搜索窗口,而且要指定搜索位置,比如C:\:
Run, find C:\ - 显示指定文件的属性窗口
假设我们要打开文件“MyFile.txt”的属性窗口,则使用关键字properties 然后接上目标文件即可:
Run, properties MyFile.txt - 用“资源管理器”打开指定文件夹
我们知道使用Run, explorer C: 或Run("explorer C:") 即可打开指定的文件夹,可是有时候我们需要在资源管理器中打开它,这时可使用关键字 explore:
如:Run, explore C: - 打印指定文件
如:Run, print MyFile.txt
- 打开网页,
2、窗口操作
注意:窗口标题和窗口文本参数总是对大小写敏感的。
- 等待窗口系列命令/函数 AHK提供了用法类似的一组窗口等待命令/函数:WinWait/WinWaitActive/WinWaitClose。它们分别用于等待窗口出现、等待窗口被激活、等待窗口被关闭。由于这些命令/函数的参数类似,现仅以WinWait为例说明。
WinWait [, 窗口标题, 窗口文本, 超时时间, 排除标题, 排除文本]
WinWait 的作用是在目标窗口出现之前不再执行后面的所有语句。 - 激活窗口相关命令/函数 目标窗口成为活动窗口的办法就是激活它,可用的命令/函数是WinActivate:
WinActivate [,窗口标题, 窗口文本, 排除标题, 排除文本] - 关闭窗口 关闭窗口有两种方式,一种是正常的关闭窗口(WinClose),另一种则是强行关闭窗口(WinKill):
WinClose/WinKill [,窗口标题, 窗口文本, 超时时间,, 排除标题, 排除文本] - 更准确的标识窗口的方法(主要针对AHK脚本) 程序在运行时起码会有一个进程,如果能获得这个进程ID就能在一定程度上保证对窗口的准确标识。另外,每个窗口都有定义窗口类名(Class,比如说记事本 窗口的类名就是Notepad),所以我们可以以此排除与目标窗口不同的其它窗口类。其实,我们还有一个更准确的方法:
每个窗口(包括控件在内)都被Windows指派了一个可区别于其它窗口的唯一的标识符(ID),我们称之为窗口句柄(HWND)。
我们先来了解一下获得窗口句柄的命令/函数:
WinGet[, 输出变量, ID, 窗口标题, 窗口文本, 排除标题, 排除文本]Run, Notepad, , , ThisPID ;先获得运行的记事本程序的进程IDWinWait, 无标题 - 记事本 ahk_pid %ThisPID% ;等待该进程窗口的出现WinGet, ThisHWND, ID, 无标题 - 记事本 ahk_pid %ThisPID% ;获得窗口句柄WinActivate, ahk_id %ThisHWND% ;这里的ahk_id表明跟在后面的变量是窗口句柄WinWaitActive, ahk_id %ThisHWND%Sleep, 3000WinClose, ahk_id %ThisHWND%WinWaitClose, ahk_id %ThisHWND%
3、模拟键击和鼠标点击
- 模拟鼠标点击(按钮等)控件 既然是模拟用户操作,自然就包括了模拟鼠标点击在内。适用命令/函数:Click/MouseClick/ControlClick 其中Click/MouseClick用来模拟用户的物理操作(点击),把鼠标点击事件发送到指定坐标位置(相对当前窗口或绝对位置)上,但这种方法并不能保证100%的准确性,屏幕分辨率、用户干扰和系统环境等都会影响到它们的执行结果,而ControlClick则直接把鼠标点击事件发送到目标窗口的目标控件上,因而更准确,一般我们不考虑使用坐标位置方式的点击,下面仅以ControlClick为例说明:
ControlClick [, 目标控件或坐标位置, 窗口标题, 窗口文本, 鼠标按钮, 点击次数, 选项,排除标题, 排除文本]“目标控件”参数是指要点击的控件的类别名(ClassNN)或控件文本,另外还可以使用控件句柄(若用的是控件句柄则第一个参数需留空,并在第二个参数中使用ahk_id %控件句柄%)。AHK用户请使用 AutoIt3 Window Spy,AU3用户则请使用AutoIt Window Info,你可以在相应的开始菜单项目里找到它们,或者到安装目录下寻找。先打开你要进行操作的目标窗口,然后运行 AutoIt3 Window Spy 或 AutoIt Window Info,接下来就是把鼠标移到目标控件上(比如某个按钮): - 模拟键盘操作 键盘也是我们在操作窗口时会用到的工具,比如说在安装软件的时候经典的“一路回车大法”。下面简单介绍一下模拟键盘操作的方法。Send
这个是最直接的方法,就是模拟用户按键行为,直接发送键击命令,用法请参考官方文档,
4、控件操作
然而,在真正实现自动化时仅靠上面的技术往往难以达到预期目的。下面开始进入最为重要的控件操作。
- 设置文本 在安装软件的过程中用户往往需要提供一些必需信息,比如安装目录。很多用户并不喜欢把软件安装到默认的C盘而更愿意把它们安装到别的地方,那么脚本究竟提供了什么方法能让我们修改如下图所示的路径呢?我 们先用上文中提到的AutoIt3 Window Spy 或 AutoIt Window Info 来获得这个路径的编辑框的信息,假设这个窗口的标题为Setup foobar,该路径编辑框的类名是Edit1,而我们需要把它改成“D:\foobar2000”,接下来就可以使用下列命令/函数来设置它的文本了:ControlSetText [, 目标控件, 新文本, 窗口标题, 窗口文本, 排除标题, 排除文本]ControlSetText, Edit1, D:\foobar2000, Setup foobar
- 选中和取消选中单选框和复选框项目 有时程序为了满足用户的个性化设置而需要用户提供更多的信息,我们经常会遇到这样的情况Control [, 命令, 值, 目标控件, 窗口标题, 窗口文本, 排除标题, 排除文本]
- 选择下拉列表的项目 答案仍是使用上面提到的命令/函数。对这种控件而言,AHK适用的命令是“Choose, N”和“ChooseString, String”,分别表示选中第N个项目和选中与字符串String匹配的项目;