1、第一次亲密接触 AutoHotkey 原 我认识 AutoHotkey 这款软件应该算是偶然吧,那是一个月前我的舍友让我帮他们重装系统,于是我就上网下载了些 XP 光盘并帮他们安装系统(说起 XP 光盘我可是用过不少哦! )在使用这些光盘的时候,我发现它们很有意思,特别是那些集成补丁和软件的、有启动界面的、有自动安装功能的光盘,让我马上产生要研究一番的冲动。网上流传的一些系统光盘里面会有软件安装管理器,这是由 YangHaiJun 写的一个程序,它可以在系统安装完毕后执行并提供用户一个界面以选择需要的常用软件、补丁和优化功能,相信很多人都见过。其界面如下图:让我觉得最有意思的是它安装软件时的全
2、自动化,完全不需要用户操作即可安装软件,连使用注册机注册软件都是自动的,第一次见真的感觉有点神奇呢!于是我就开始研究它的制作方法,查看一下自动安装程序的软件描述,很快就发现它是用了 AutoIt来编的。接着就搜索了一下相关资料,再接着就是研究设置 BuildLab 数值为变量名 OutputVar 并在对话框中显示。MsgBox, 4, 修改确认, 确认修改指定注册表项目? ;询问是否进行操作IfMsgBox, Yes RegWrite, REG_DWORD, HKEY_LOCAL_MACHINE, SYSTEMCurrentControlSetControlSession Manager,
3、AutoChkTimeOut, 1 ;如果 Yes 按钮被按下则进行指定操作If ErrorLevel MsgBox, 0, 错误, 无法进行指定操作 ;出现错误则提示用户MsgBox, 4, 修改确认, 确认删除指定注册表项目? IfMsgBox, YesRegDelete, HKEY_LOCAL_MACHINE, SOFTWAREtest,IfMsgBox, NoReturn If ErrorLevel MsgBox, 0, 错误, 无法进行指定操作 闲着也是闲着,翻译一下 AutoHotkey 的帮助文档 哈哈,发现自己的英语没有过关啊 ,马上找大学英语来看看先不过这翻译量也太大了,寒
4、自己玩玩,哈哈,中文的看起来 多了!* 介绍 AutoHotkey 是一款免费的、Windows 平台下开放源代码的热键脚本语言。有了它,您就可以: 通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化。您可以自己编写 宏 或者使用宏录制器来生成; 为键盘,游戏操纵杆和鼠标创建 热键。 事实上任何的按键、按钮或组合键都可以被设置为热键; 当键入您自定义的缩写时可以 扩展缩写。例如, 键入“btw”就可以自动扩展为“by the way”; 创建自定义的数据输入表格、用户界面、菜单等。详情请看 图形界面 部分; 映射 键盘、游戏操纵杆和鼠标上的按键或按钮; 运行现有的 AutoIt v2
5、脚本 并运用 新功能 来增强它们; 将脚本文件转换成 EXE 可执行文件,使得程序在没有安装 AutoHotkey 的机器上得以运行。 学习 AutoHotkey 可能比你想象的还要容易。马上看看 菜鸟指南 吧! 更多关于热键的说明 AutoHotkey 可令键盘、游戏操纵杆和鼠标的所有潜能都发挥出来。例如,除了典型的Control、Alt 和 Shift 键之外,你还可以定义 Win 键(徽标键)和 Capslock 键作为调节键。 而实际上你还可以设置任意的键盘按键或鼠标按键作为调节键。详细内容请看 高级热键 部分。 其他功能 调节音量、设置静音,以及其他 关于声卡的设置; 令指定窗口变为
6、 透明,顶层窗口,或改变 外形; 用 游戏操纵杆 或 键盘 代替鼠标; 监控 您的系统。例如,当您不希望见到的窗口出现时自动关闭它们; 获取并改变 剪贴板的内容, 包括从资源管理器中复制的文件的名称; 关闭或屏蔽 Windows 自有的快捷键,例如 Win+E 和 Win+R; 取替 Alt-Tab (通过按键、鼠标滚轮或按钮)从而减轻 RSI(肢体重复性劳损 ); 使用您喜欢的图标、工具提示(ToolTip)、菜单项目和子菜单来自定义 托盘图标菜单 ; 显示 对话框、 工具提示(Tooltips)、气球提示 以及 弹出菜单,与用户交互; 执行脚本动作来 响应 系统关闭或注销; 检测系统 空闲
7、时间。例如, 在系统空闲的时候执行高 CPU 负荷的任务; 通过检测 图像 和 象素色彩来自动执行游戏中的动作; 读取、写入 以及 解释 文本文件比起其他语言更容易; 针对一组与 通配符 匹配的文件进行操作; 可对 注册表 和 INI 文件 进行操作。 在 Windows 95/98/Me 下的一些限制: 一些 高级特性 - 例如鼠标热键和 热键串 - 在 Win9x 平台将失效。 特别鸣谢 在此特别感谢 Jonathan Bennett,这家伙于 1999 年把 AutoIt v2 作为免费软件慷慨地发布出来,使 AutoIt v2 成为我自己以及世界上所有用户获得灵感和节省时间的工具。另外
8、,AutoHotkey 许多针对 AutoIt v2 指令集的增强功能,如 Window Spy 和脚本编译器都是直接根据 AutoIt v3 的源代码改写的。所以在此感谢 Jon 以及其他 AutoIt的开发人员。 最后,我想要说的是:如果没有 这些高手 的帮助,AutoHotkey 就不会走到现在 创建键盘或鼠标宏指令 原 这个是帮助文档里“Creating a Keyboard Macro or Mouse Macro”部分的内容,哈哈,比较少东西我就拿它下手了链接不作修改 * 所谓宏是指一系列按人的需求进行的的脚本动作。最常使用的宏就是对一个或多个指定窗口发出一系列 模拟键击 和 鼠标
9、点击 命令,这些窗口将会对宏所发出的每一个键击或点击命令作出相应反应,实际效果就如用户真的进行相应操作一样,这样就可以迅速而轻松地实现自动完成各种繁重而又重复的操作了。 当然您可以自己手写宏,不过您会发现有了脚本录制器(AutoScriptWriter)的帮助,写更复杂的宏将变得简单。脚本录制器就是一个宏录制器,AutoHotkey 就有附带(开始菜单所有程序AutoHotkeyAutoScriptWriter)。它就想一个摄影机一样记录键盘和鼠标动作,还可以获得窗口的 激活状态,然后就可以把这一系列的动作转换为可供以后迅速“回放”的宏(脚本文件)。 要进行“回放”,最方便的一种方法是把指定的
10、宏绑定到一个 热键 或 热键串。例如,下面这个热键将会创建一个空白邮件并进行相关设置: !s: ; 设定 Control+Alt+S 为热键,按下后将进行下面的操作 IfWinNotExist, Inbox - Microsoft Outlook return ; 如果 Outlook 的收件箱窗口未被打开,则不进行任何操作,返回 WinActivate ; 激活上面命令中指定的窗口 Send n ; 发送 Control+N 键击命令创建一个新的空白邮件 Send Tab 2Product Recall for ACME Rocket Skates ; 按两次 Tab 键,输入主题 Send
11、 TabDear Sir or Madam,Enter 2We have recently discovered a minor defect . ; 类似上面 return ; 此行用以表示热键结束 类似上面的热键宏对那些您每天都要重复进行的操作尤其有用。你可以把有用的脚本放到开始菜单或桌面方便使用。 要马上开始创建您自己的宏和热键,请阅读 菜鸟指南 。 热键 (鼠标, 游戏操纵杆和键盘快捷键) 原 还是无聊之中这个暑假好热啊 还是呆在家里混比较好 既然没事,我继续搞搞这个所谓的翻译,哈哈,全是靠自己的理解翻译的,现在翻译的速度比之前的快多了, 看来这样可以学会很多这些专业词汇呢(包括按自己
12、理解写的 )不过我还是挺高兴的,毕竟我自己看还是可以看懂的呢! 里面的链接我就不改了,省时 * 热键,也就是快捷键,可以用来触发某些指定的动作(例如运行一些程序或 宏指令)。下面这个例子中 Win+N 被设置为运行记事本的一个快捷键,井号#代表 Win 键(徽标键): #n: Run Notepad ;“开始运行”中可运行的程序都可以使用,其他程序需要指定路径 return 上面的最后一行的“return“ 用以表示此热键的结束。不过,如果此热键只需要处理一行命令的话,那一行命令就可以放到双冒号的右边(不需要空格),换句话来说就是 return 可以省略了: #n:Run Notepad 要使
13、一个热键有更多调节键,只需把它们连续列出即可。下面这个例子中 ! 表示Control+Alt: !s: MsgBox 您按了 Ctrl+Alt+S. return 值得注意的是,和其它常用的热键一样,它们是有一个先后顺序的,例如上面的例子中,如果先按下 S 键然后才按 Control 和 Alt 将不能触发热键。举个例子来说,我们用 Ctrl+Alt+Del 来调出 Windows 任务管理器,同样也是有个顺序的,您可以自己实践一下,以下不再说明。 您可以使用下列调节键来定义热键: 符号 相关描述 # Win (徽标键) ! Alt Control + Shift 在这里 D 表示按键被按下
14、return ; 表明如果按钮未被按下则没有动作 MsgBox 您按着 Control 键同时按下了游戏操纵杆的第二个按钮。 return 这个程序有点类似 多线程, 它允许在前一个热键子程序仍在运行的时候运行新的热键,例如上面有一个热键被触发并显示 对话框(MsgBox),新的热键仍可以运行。 使用 SmartGUI Creator 3.5.1 创建 GUI 原 SmartGUI Creator 3.5.1 是编写 AutoHotkey 的用户界面(GUI)时非常有用的一个可视化设计工具,使用它可以很直观地设计界面并生成脚本。下载地址在这里,它支持 Windows NT/2000/XP/20
15、03 及更高级版本;Windows 9x 用户可下载此版本:随意解压下载的 zip 文件到任意目录,运行其中的 SmartGUI.exe 即可启动 SmartGUI Creator。运行后可看到一个蓝色的主界面和一个 GUI 助手(GUI Helper)在一侧,如图 1 所示。在主界面上点击右键就会显示相关命令,其中 Add XXX那一列就是用来创建控件的(如图 2 所示)。选中后会立即在主界面上显示一个控件,此时控件左上角依附着鼠标,移动控件到合适的位置点击一次则鼠标自动跳到控件右下角,然后移动鼠标调整控件大小并再次点击则控件创建完毕。最后在目标控件上点击右键将显示相关命令,自上而下分别是复
16、制控件、移动、定位、删除、修改标识、水平居中、垂直居中、对齐(左/中/右)等命令。由于默认设置了显示网格并自动对齐网格,因此若想对控件位置进行更加精细的调整,在右键菜单的“Options”中“MicroEditing”即可。 使用 SmartGUI Creator 3.5.1 创建的 GUI 可含有以下这些控件:Button(按钮),Checkbox(复选框),ComboBox(选择框),DateTime(日期),DropdownList(下拉列表),Edit(编辑框),GroupBox(组框),Hotkey(快捷键),ListBox(列表框),ListView(项目显示),MonthCal(
17、月历),Picture(图片),Progress(进度条),Radio(单选框),Slider(拖动条),Tab(标签),Text(文本),Updown(上下箭头)。大家参见 AutoHotkey 帮助文档结合实际使用很快就可以了解它们的具体意义。在它的右键菜单中还有个比较有趣的功能,就是“GUI Stealer(偷窃者)”(留意图 2)选中它后会提示你激活你想要“偷窃”的窗口,按下 F12 进行偷窃或按 Esc 退出。成功后会看到主窗口上居然把那窗口的界面(包括菜单、按钮、文本等控件)“复制”过来了!挺有趣的功能哦_不过它也不是个“神偷”,对很多的窗口它也是无能为力的哦,可惜可 热字串和自动
18、扩展 原 这次翻译不太好搞,例如那个 Tab,我就考虑了比较久,因为它可以被翻译为跳格键、空位键、制表键等等,用哪个比较适合我还是需要想想,而且在 AutoHotkey 的帮助文档里 tab 既可以指 Tab 键,也可以指 Tab 符,本来我想干脆不作翻译直接就是 Tab 了,后来还是翻译为“空位”了,毕竟比较贴切一点,一个 Tab 代表 8 个空格(也就是空位啦)。* 提醒一下:热字串要求在 Windows NT/2000/XP 或更高级版本才有效。 热字串主要用来实现自动扩展,例如当你键入一些单词的缩写时自动扩展成完整词句,不过热字串也同样可以用来执行任何脚本动作,在这一方面它和 热键 类
19、似,但它们由更多的字符组成,因此才被称为热字串。 要定义一个热字串,只需要在两个双冒号之间插入缩写词,其后加上触发结果(替换文字)即可。例如: :btw:by the way 在上面的例子里,当键入 btw 这个缩写之后,再键入 结束符(ending character)即触发热字串,使其自动扩展为“by the way“。结束符可以是指空格、句号或回车(如果要直接触发热字串而不必键入结束符,可以使用 * 选项) 注意:后面的语句不能是中文,否则会变成乱码! :( 若要使用中文语句,可参考下面的 方法: 这个例子中热字串的作用就是自动地把“btw“删除然后替换为“by the way“从而实现
20、所谓的自动扩展。另外,正如上面所说,热键串还可以用来定义其他动作,不过记住要把相关命令置于热键串之下: :btw: MsgBox 您键入了“btw“。;键入 btw 及结束符将显示此对话框,而 btw 将被删除(请看下面的说明) return 尽管上面的热字串不属于自动扩展的一类,但用户键入的缩写词仍会被自动删除,这是因为它的默认设置为自动发出退格命令。如有需要可以使用 b0 选项 来取消这一设置。 结束符 在默认状态下,用户必须在键入热字串的缩写词后再键入一个缩写词,使用 * 选项 即可免去这一步。 结束符默认是指这些字符:-():;“/,.?!n t (注意:n 代表回车,t 代表 Tab
21、,在n 和 t 之间还有一个空格)。您可以仿照下面的语句来更改这一设置: #Hotstring EndChars -():;“/,.?!n t ;右边的所有字符串都被定义为结束符 选项 热字串的默认行为可以有两种方法改变: 1. 使用 #Hotstring 命令,用它结合下面的选项进行的设置会影响到其下脚本中的所有热字串,例如:#Hotstring c r ; 区分大小写并且“发送原文”; 2. 在热字串的前两个冒号之间插入一个或多个选项,例如::c*:j: ; 区分大小写并且取消结束符(也就是说不用结束符即可触发热字串)。 注意:当使用超过一个选项(下面列出)的时候,空格键可被随意添加到这些
22、选项之间(而不会有影响)。* (星号):不再需要结束符(例如空格和回车等等)来触发热字串。使用 *0 来恢复。在下面的例子里,当号一被按下即触发热字串从而自动扩展缩写::*:yk: ? (问号):键入任何含有缩写词的词句都会触发热字串。举个例子,对于 :?:al:airline 这个热字串来说,键入含有“al”的“practical”这个单词将会生成“practicairline”(只是 al 被替换成了 airline 而不是整个单词,注意到了吗?)。 使用 ?0 (问号后面一个零)来恢复。 B0 (B 后面接一个零): 自动退格删除缩写词的功能将被禁止。取消此功能后若想恢复可使用 B 选项
23、。 C: 区分大小写:用户键入的缩写词必须和脚本中的严格一致(也就是说区分大小写)。使用 C0 (C 后面接一个零)来取消此功能。注意:如果您需要为同一个缩写词分开定义为两个只有大小写格式不同的热字串的话,那么请在其中一个热字串的前两个冒号之间插入空格,用以和另外一个热字串区分。这样做是有必要的,因为热字串属于标识,而每个标识必须是唯一的。在下面的这个例子里,第一个热字串使用了一个额外的空格来与第二个区分::c :ceo:chief executive officer :c:CEO:Chief Executive Officer C1: 取消匹配大小写。使用这个选项来使得那些自动扩展的热字串对
24、大小写不再敏感(即输出结果将和热字串中定义的完全一致)。使用 C0 来恢复。热字串默认状态下是匹配大小写的,如果用户键入的缩写词全部都是大写则输出的结果也全部大写;如果键入的第一个字母是大写则输出的第一个字母也会是大写;其他情况的输出结果将和热字串中定义的完全一致。下面针对此热字串:c :ceo:chief Executive officer 来详细说明: 若键入 CEO 加结束符则输出结果为 CHIEF EXECUTIVE OFFICER(全部字母都大写);若键入 Ceo/CEo/CEO/CeO 等则输出结果为 Chief Executive officer(也就是说只是第一个字母改为大写而
25、已);其他格式的输出结果都是和热字串原来定义的一致,也就是 chief Executive officer。 Kn: 按键延迟;通常来说几乎所有使用自动退格和自动扩展功能的热字串的按键延迟都是 0。设置为零是被推荐的,因为这样既迅速而又可以很好地配合其它进程(由于内部设置了 Sleep 0)。若需要设置延迟,则给变量 n 赋值即可。用 -1 来表示完全没有延迟,如果您的 CPU 经常性的处于重负荷状态的话,这会使自动扩展的速度加快。 O: 当自动扩展的文字生成的时候省略结束符。这在你需要结束符来触发热字串而又不想让它输出到目标的时候非常有用。例如:通常我们是这样设置热字串的 :ar:arist
26、ocrat,当键入“ar“和空格会输出“aristocrat ”(它画蛇填足地在后面添加了空格符) ; 而当使用 O 选项后也即 o:ar:aristocrat ,键入“ar”和空格会输出“aristocrat”,注意它是没有空格符在后面的。使用 O0 (字母 O 后面接一个零)来恢复。 Pn: 设置热字串的 优先级 (例如 P1)。此选项对实现自动扩展功能的热字串没有影响。 R: 发送替换文字的原文。也就是说热字串将完全一致地输出原文而不会解释Enter或c 这些特殊的字符串,从而避免那些有 延续部分(continuation section) 的热字串自动发出回车或 Control-C 等
27、等命令, 使用 R0 (R 后面接一个零)来恢复。 Z v1.0.30+: 每触发一次热字串则重设一次热字串识别器。这里的意思是脚本将会在每次热字串触发后消除对前一次键入内容的识别并等待新的热字串。举个例子来说明一下,下面的热字串没有 Z 选项,所以键入 111 后热字串将会触发两次而不是一次: :b0*?:11:Send xxreturn 只要在 b0 前面插入一个 Z,就必须键入 1111 而不是 111 来触发两次热字串。 使用 Z0 (Z 后面接一个零)来恢复。 大段替换文本 在 v1.0.32 以上版本中,通过添加 延续部分(continuation section),热字串可以输出
28、大段的替换文本。例如: :text1: ( Any text between the top and bottom parentheses is treated literally, including commas and percent signs. By default, the hard carriage return Enter between the previous line and this one is also preserved. Also, the indentation Tab to the left of this line is preserved by defa
29、ult. See continuation section for how to change these default behaviors. ) 特别需要注意的是,延续部分不能直接使用中文字符,否则会输出乱码,解决方法请参考下面。延续部分的存在同时使得热字串从默认模式变为 原文模式。留意上面的文字,Enter和Tab都不会被认为是按键指令,要撤销这一设置的唯一一个方法是在每一个有延续部分的热字串中使用 r0 选项。 注意 热字串输出的语句是不直接支持中文的,不过也可换个思路,借助 clipboard 命令赋予剪贴板自定义的文字,然后通过发送 Ctrl+V 的方法来输出中文,例如: :sbs
30、:clipboard = 顺便说一下Send, vReturn 目前类似%MyVar%这样的变量参数不支持在替换文本中使用。要使用它们就不能把热字串设为自动扩展而是在缩写词之下使用 发送(Send) 命令并用一行 Return 接上。 内建变量 A_EndChar 就是那些用以触发最近的非自动扩展类的热字串的结束符。如果不需要结束符来触发(*选项的作用),那么它的值为空。此变量对于那些使用发送(Send)命令的热字串或那些键入不同结束符而有不同行为的热字串来说比较有用。要发送结束符自身,需要使用 “SendRaw %A_EndChar%“(之所以使用 SendRaw(发送原文) 是因为类似 !
31、 这样的字符不能通过普通的发送(Send)命令正确发送。 尽管在热字串定义式中的逗号、百分比符号和单冒号不需要进行 转码 ,但是那些有空格和空位(Tab)在其左边的重音符和分号就需要换码。请查看 换码序列 获得详细的列表。 尽管 发送(Send)命令的语法 被支持用在自动扩展文本部分(除非用了原文(raw)选项),但热字串的缩写词本身不能用它来表示。也就是说,在缩写词里不用ENTER来表示回车键或用SPACE来表示空格键。取而代之的方法是使用 n 来表示回车以及用 t 来表示跳格(Tab)(请查看 换码序列 获得详细的列表)。 下面举个例子说明: :*:okENTER:no problem ;
32、 键入“ok“再加一个回车键不能触发热字串,除非键入完整的 okENTER。:*:okn:no problem ; 键入“ok“再加一个回车键即可触发热字串。 热字串定义了空格和空位(Tab)将被直接认作是字符本身,例如下面的热字串将产生两种不同的结果::btw:by the way:btw: by the way ; 比上面多了一个空格,那么这个空格也会严格地输出来。 热字串的缩写词不可以超过 30 个字符。如果长度超出了程序会提醒您的。热字串的替换文本也有 AutoHotkey 最大行数的限制,但它最多可以达到 16,383 个字符。不过也可以通过一个巧妙的方法来突破这一限制,那就是在热字
33、串中使用 Send %自定义变量% 。 例如您可以预先设置自定义变量并赋值为超过限制部分的字符,然后在热字串中调用即可。 热字串的先后顺序决定了它们的优先级,换句话来说就是如果有超过一个的热字串符合用户键入的内容,则只有排在最前面的那个热字串才会生效。 运行脚本时用户进行的任何退格行为都将被视为企图核对热字串。但是,如果用户在编辑器中使用了上/下/左/右箭头、PageUp、PageDown、Home 和 End 这些按键时将导致热字串识别重设,也就是说消除对这一次键入内容的识别并等待新的热字串。 即使处于激活状态的窗口忽略用户的键击行为热字串也依然可以输入,也就是说就算替换文本不可见热字串还是
34、会被触发。此外,退格键也还是会撤销最近的键击,尽管您看不到效果。 可以使用 Gosub 或 Goto 来转到指定的热字串标识(Label), 只要在标识名前面加上一对冒号即可。不过,如果在冒号之间没有选项符则必须对双冒号进行转码。例如: Gosub :btw 尽管热字串不被监控而且在不可见的 输入(Input) 命令生效期间将不会被触发,但可见的输入是可以触发它们的。 热字串不会被 AutoHotkey 脚本发出的键击行为触发。这样避免了发生热字串反复触发导致无限循环的可能。 在某些方面来说 输入(Input) 命令比热字串更加灵活。例如,它允许在激活窗口中键击的不可见(例如游戏)。它还支持像
35、 Escape 键这样的非字符式结束键。 所有包含热字串的脚本都将自动使用 键盘钩子(keyboard hook)。 热字串和热键的相同反应: 它们都会受到 中断(Suspend) 命令的影响; 都服从 #MaxThreads 和 #MaxThreadsPerHotkey (除了#MaxThreadsBuffer)的设置; 含有热字串的脚本都将自动 持续(persistent); 非自动扩展类的热字串运行时将会创建新 线程(thread),此外它们还将更新内建的热键变量,例如 A_ThisHotkey 。 热字串助手 Andreas Borutta 推荐使用下面的这个脚本,如果您经常使用热字串
36、那么这个脚本应该非常有用。按下 Win+H(或者您自己定义的热键),当前选定的文本就会变成热字串。例如,如果您在某个文本编辑软件中选定了“by the way“,按下 Win+H 就会有个界面出来提示您键入缩写词(例如 btw),这样就会往脚本里添加新定义的热字串,而且脚本会自动复载从而激活此热字串。此后您就可以键入“btw“和结束符来触发热字串“by the way“了。 #h: ; Win+H 设置为热键; 首先要获得当前选定的文本,我们使用 clipboard 而不是“ControlGet Selected“; 这是因为它在大多数的编辑器(即文字处理软件)中更加有效; 先保存当前剪贴板的
37、内容以便稍后复原; 尽管只能对纯文本进行操作,但总比没得做要好吧AutoTrim Off ; 保留剪贴板中引头和结尾部分的空白字符ClipboardOld = %ClipboardAll%Clipboard = ; 这里必须是空值,以清空剪贴板Send c ; 发送 Ctrl+C 命令,以复制选中的文字 ClipWait 0.5; 用 n 替换 CRLF 和/或 LF 以便使用“send-raw“热字串; The same is done for any other characters that might otherwise; be a problem in raw mode:String
38、Replace, Hotstring, Clipboard, , , All ; 先完成这一替换以避免干扰到下面的StringReplace, Hotstring, Hotstring, rn, r, All ; 在微软的 Word 中使用r 比使用n 更有效StringReplace, Hotstring, Hotstring, n, r, AllStringReplace, Hotstring, Hotstring, %A_Tab%, t, AllStringReplace, Hotstring, Hotstring, ;, ;, AllClipboard = %ClipboardOld%
39、 ; 还原此前剪贴板的内容。; 移动 InputBox 控件的插入点(光标)到合适位置:SetTimer, MoveCaret, 10; 显示 InputBox 控件,提供默认热字串:InputBox, Hotstring, 添加热字串, 请在下面显示的文本输入框中键入缩写词。您也可以在这里编辑替换文本。nn 例如: :R:btw:by the way, :R:%Hotstring%if ErrorLevel BookmarkString, 如果两个变量都含有数字类的值,那么将比较它们的大小,否则将按字母顺序来比较。 除了 函数(function) 中的局部变量以外,其它所有的变量都是全局变量
40、;也就是说,在整个脚本中它们可以被任何 子程序(subroutine)读取或改变。另外,变量一般不被声明;它们会自动成立。 要指配一个字串到一个变量,请参考下面的例子: MyVar1 = 123 MyVar2 = my string 要对某个变量和数字/字串进行比较,请参考下面的例子: if MyVar2 = my string MsgBox MyVar2 含有字串“my string” if MyVar1 = 100 MsgBox MyVar1 含有的数值是 %MyVar1%,比 100 还大 留意一下,上面第二个 MyVar1 是被附上了百分比符号了的。这样将会在对话框的相应位置显示 My
41、Var1 的值。这种方法也可用于复制某变量的值到另外一个变量中:只要在变量 A 的右方添上变量 B 的名称并附上百分比符号即可。例如下面这行脚本,变量 MyVarConcatenated 的值被指配为字串“123 my string”(后面两个变量的值请看上面的例子) : MyVarConcatenated = %MyVar1% %MyVar2% 要比较某个变量和另外一个变量的大小,请参考下面的例子: if (ItemCount ItemLimit + 1) MsgBox ItemCount 的值是 %ItemCount%,比%ItemLimit% + 1 还大 注意一下,第一行中使用了圆括号
42、。圆括号的出现意味着那个 if 陈述句包含了 表达式(expression)。如果没有括号,该行将被认作“非表达式类 if 陈述句”,那么就需要为变量 ItemLimit 附上百分比符号。if 陈述句被限制了只能使用单纯的比较运算符(仅针对关系表达),也就是说它们不能使用运算符号和连接词,例如“AND“ and “OR“。 数学运算: 要进行数学运算,请使用冒号等号符来把 表达式(expression)的运算结果指配到一个变量中,例如: NetPrice := Price * (1 - Discount/100) 请查看 表达式(expression)的说明来获得详细的数学运算符的列表。 剪贴
43、板(Clipboard): 剪贴板(Clipboard)这个变量比较特殊,因为它含有当前 Windows 剪贴板的文本内容。虽然如此,它也是可以作为一个普通的变量来使用的。下面这个例子将会显示当前剪贴板的内容到一个对话框上: MsgBox %clipboard% 要修改剪贴板的内容,可参考下面这个例子,它将使当前剪贴板的内容替换为后面指定的文字: clipboard = 这是替换文本的第一行,rn 这是第二行。rn 在这里您可以尽情地使用中文了! 在上面的例子中,r 和 n (重音符后面接着字母“r“或“n“)被用来表示两个特殊字符:回车和换行。这两个字符使得文本转入下一行,就像用户按下了回车
44、键一样。 要附加文本到剪贴板(clipboard)(或任何其它变量),请参考下面的例子:clipboard = %clipboard% 这里就是附加的文本。 详细说明请查看 剪贴板(clipboard)和 变量(variables) 部分。 不断重复一系列的动作 如果需要不断重复一系列的动作, loop(循环)就是您要的答案。例如,下面这个循环将显示对话框(MsgBox)三次: Loop 3 MsgBox 此对话框将显示三次! 也可以在 Loop 命令后面指定一个变量,如果动作需要重复的次数是由脚本中的其它地方决定的,这样做就非常有用: Loop %RunCount% Run C:Check
45、Server Status.exe Sleep 60000 ; 等待 60 秒 在上面的例子中,脚本将进行指定的循环次数,除非变量 RunCount 的值为 0,这个循环才会完全跳过(结束)。 另外也可以设置循环在一个或多个条件发生改变的时候中止,例如下面这个例子: Loop PixelGetColor, Color, 11, 22 ;获取屏幕指定位置的象素颜色 if Color = 0xEEAA99 ; 如果上面获得的值符合此行指定的值 break ; 中止此次循环 ; 否则,点击下面指定的按钮,直到象素改变颜色(为指定的值) ControlClick, OK, 目标窗口的标题 上面这个例子
46、的 Loop(循环)就其作用来说其实和“只要.就.”是一样的。“只要.就.”这个表达语句用在循环中就是指只要某个/某些条件仍然成立就继续重复指定动作。因而上面的循环例子意思就是说只要象素颜色不符就继续点击指定按钮。当符合条件的颜色出现了,由于 break(中止)命令的作用,此循环将停止,使得脚本跳到下一行(大括号后面的部分)并执行其后的命令。 上面的例子是常用的一种循环。对于一些特殊需要,可使用下面这些循环命令: File-reading/writing loop(文件循环读取/写入): 检索文本文件的内容,每次一段。也可以用来转换某个文件到不同的格式或修改为一段接一段的排版格式。另外还可以用
47、来检索符合某个条件的文段。 Files and folders loop(文件与文件夹循环): 对某个文件夹中的文件和文件夹进行检索,每次一个文件/文件夹。这样就可以对符合条件的文件或文件夹进行操作。 Parsing loop(分解循环): 对某个字串的子字串进行检索,每次一个。这使得类似“Red,Green,Blue”这样的字串可以方便地分为三个部分。 Registry loop: 对指定注册表的子键进行检索,每次一个项目。 对文件和文件夹进行操作 要在某个文件的结尾处添加文字(或新建一个文件),请参考下面的例子。注意它使用了n(换行符)来转到文本的下一行: FileAppend, 这是附加的文字.n, C:My DocumentsMy Text File.txt 要覆盖某个已存在的文件,请在 FileAppend(文件附加)命令之前先使用 FileDelete(文件删除)命令。例如:FileDelete, C:My DocumentsMy Text File.txt 这里还有一些其它常用的文件和文件夹命令: FileRead(文件读取): 获得整个文件的内容并指配到某个变量中 File-reading Loop(文件循环读取)