AutoHotkey 向导:创建宏和热键 |
您所在的位置:网站首页 › 注册脚本怎么写的 › AutoHotkey 向导:创建宏和热键 |
指南和概述
这个简短的介绍将帮助您马上开始编写您自己的宏和热键脚本. 指南目录 创建脚本 启动程序或文档 发送键击和鼠标点击 激活和操作窗口 利用 MsgBox, InputBox 等从用户中获取输入. 使用变量和剪贴板 反复重复一系列动作 操作文件和文件夹 其他功能概述 创建脚本每个脚本都是需由程序 (AutoHotkey.exe) 执行的包含命令的纯文本. 脚本中还可以包含 热键 和 热字串 或者甚至完全由它们组成. 不过, 在不包含热键和热字串时, 脚本会在启动后从上往下按顺序执行其中的命令. 创建新脚本: 下载 并安装 AutoHotkey. 在桌面或您选择的文件夹中右键点击空白处. 在菜单中, 选择 新建-> AutoHotkey 脚本. 输入文件名, 确保它以 .ahk 结尾. 例如:Test.ahk。 右键点击此文件并选择 Edit Script. 在新的空行中,输入下列内容:#space::Run www.google.com。在上面的语句行中, 首个字符 "#" 表示 Windows 键; 所以 #space 表示按住 Windows 键然后按下空格键来激活热键. 双冒号 :: 表示每次按下此热键时会执行其后续命令, 这里是转到 Google 网站. 要试用此脚本, 请继续下列操作: 保存并关闭此文件. 双击此文件来运行. 在任务栏通知区域会出现新的图标. 按住 Windows 键并按下空格键. 在默认浏览器中会打开网页. 要退出或编辑此脚本, 则在任务栏通知区域的绿色 "H" 图标上点击右键.注意: 多个脚本可以同时运行, 其中的每个脚本在任务栏通知区域使用自己的图标. 每个脚本可以包含多个 热键 和 热字串. 要让您的脚本在启动计算机时自动运行, 请在开始菜单的启动文件夹中给您的脚本创建快捷方式. 启动程序或文档可以使用 Run 命令来其中程序, 文档, URL 或快捷方式. 这里有一些常见示例: Run Notepad Run C:\My Documents\Address List.doc Run C:\My Documents\My Shortcut.lnk Run www.yahoo.com Run mailto:[email protected]通过加上 热键标签 可以把上面例子的任何一个设置为热键. 在下面的首个例子中, 设置的热键为 Win+N, 而在第二个中为 Control+Alt+C: #n::Run Notepad ^!c::Run calc.exe上面的例子被称为单行热键, 因为它们只包含单个命令. 要在一个热键中执行多个命令,请把首行放在热键定义的下面,且在最后行命令的下一行添加 return。例如: #n:: Run http://www.google.com Run Notepad.exe return如果要运行的程序或文档没有在环境变量中, 那么需要指定它的完整路径才能运行: Run %A_ProgramFiles%\Winamp\Winamp.exe在上面的例子中, %A_ProgramFiles% 是 内置变量. 使用它而不使用像 C:\Program Files 这样的, 脚本可以有更好的移植性, 这表示它在其他电脑上能执行的可能性更大. 注意: 命令和变量的名称是不区分大小写的. 例如, "Run" 等同于 "run", 而 "A_ProgramFiles" 等同于 "a_programfiles". 要让脚本等到程序或文档关闭后才继续执行, 请使用 RunWait 代替 Run. 在下面的例子中, 一直到用户关闭记事本后 MsgBox 命令才会继续执行. RunWait Notepad MsgBox The user has finished (Notepad has been closed).要学习关于启动程序的更多内容, 例如传递参数, 指定工作目录和找到程序的退出代码, 请点击 此处. 发送键击和鼠标点击使用 Send 命令可以发送键击到活动的 (最前面的) 窗口. 在下面的例子中,Control+Alt+S被设置为输入签名的热键(在按下此热键前必须确保编辑器或电子邮件这样的窗口是活动的): ^!s:: Send Sincerely,{Enter}John Smith return在上面的例子中, 除 {Enter} 外的所有字符都按原义发送, 而它则模拟按下了 Enter 键. 下一个例子演示了其他一些常用的特殊字符: Send ^c!{tab}pasted:^v上面这行发送 Control+C 跟着 Alt+Tab 跟着字符串 "pasted:" 和 Control+V. 要了解特殊字符和按键的完整列表, 请参阅 Send. 最后, 可以用您输入的缩写来触发发送键击的动作, 这被称为 热字串. 例如,每当您输入“Btw”跟着空格或逗号时,下面这行会把它替换为“By the way”: ::btw::by the way鼠标点击:要发送鼠标点击到窗口,首先必须确定要点击的 X 和 Y 坐标。这个可以用 Window Spy 来完成, 它包含在 AutoHotkey 中. 下列步骤说明了使用 Window Spy 的方法: 在脚本托盘图标菜单或开始菜单中运行 Window Spy. 通过点击感兴趣的标题栏, alt-tab 切换或其他方法激活窗口 (Window Spy 被设计为保持 "置顶"). 移动鼠标光标到目标窗口中想要的位置并记下 Window Spy 中显示的鼠标坐标 (或在 Windows XP 和早期版本中, 按下 Shift-Alt-Tab 来激活 Window Spy, 这样可以复制和粘贴 "冻结的" 坐标). 在 Click 命令中使用上面找到的坐标. 下面的例子点击鼠标左键:Click 112, 223。要移动鼠标而不进行点击, 请使用 MouseMove. 要拖拉鼠标, 请使用MouseClickDrag. 激活和操作窗口要激活窗口 (使它最前面), 请使用 WinActivate. 要判断窗口是否存在, 请使用 IfWinExist 或 WinWait. 下面的例子演示了这些命令: IfWinExist Untitled - Notepad { WinActivate } else { Run Notepad WinWait Untitled - Notepad WinActivate }上面的例子会首先搜索标题以 "无标题 - 记事本" (区分大小写) 开始的任何现有的窗口. 如果找到这样的窗口, 则激活它. 否则, 启动记事本并等待无标题窗口的出现, 出现后激活它. 上面的例子还利用了 最近找到的窗口, 这样可以不需要在每个 WinActivate 中指定窗口标题. 其他一些常用的窗口命令是: IfWinActive: 检查指定的窗口当前是否活动. WinWaitActive: 等待指定窗口变为活动窗口 (通常用在激活窗口的键击后面, 例如按下 Control-F 来打开 "查找" 窗口). WinClose: 关闭指定的窗口. WinMove: 改变指定窗口的位置和/或大小. WinMinimize, WinMaximize, WinRestore: 分别最小化, 最大化或还原指定窗口. 利用 MsgBox, InputBox 等从用户中获取输入.下面的例子显示带两个按钮的对话框 (是 和 否): MsgBox, 4, , Would you like to continue? IfMsgBox, No return ; 否则, 用户选择了是. MsgBox You pressed YES.使用 InputBox 命令来提示用户输入字符串. 使用 FileSelectFile 或 FileSelectFolder 来让用户选择文件或文件夹. 对于更高级的任务, 请使用 Gui 命令来创建自定义数据输入窗体和用户界面. 提示: 您也许已经从其他例子中注意到任何命令中的首个逗号可以省略 (除非首个参数为空或以 := 或 = 开始, 或命令单独处于 延续片段 的顶部). 例如: MsgBox This is ok. MsgBox, This is ok too (it has an explicit comma). 使用变量和剪贴板变量 是脚本用来存储文本或数字的内存块. 只包含数字的变量 (可以含小数点) 在数学运算或比较时会被自动转换为数字. 除了 函数 中的局部变量外, 所有的变量都是全局的; 即可以在脚本的任意位置读取或改变它们的内容. 此外, 变量不需要声明; 简单地使用它们就可以让它们存在 (且每个变量都以空或空白开始). 要把字符串赋值给变量, 请参照这些例子: MyVar1 = 123 MyVar2 = my string 要把变量的内容和数字或字符串进行比较, 请参照这些例子: if MyVar2 = my string { MsgBox MyVar2 contains the string "my string". } if MyVar1 >= 100 { MsgBox MyVar1 contains %MyVar1%, which is a number greater than or equal to 100. }在上面的 MsgBox 行中, 注意第二个出现的 MyVar1 被括在百分号内. 这样在那里显示了 MyVar1 的内容. 使用相同的手法能用来复制一个变量的内容给另一个变量. 例如: MyVarConcatenated = %MyVar1% %MyVar2%上面这行把字符串 "123 my string" (不含引号) 保存到变量 MyVarConcatenated. 要比较两个变量的内容, 请参照此例: if (ItemCount > ItemLimit) { MsgBox The value in ItemCount, which is %ItemCount%, is greater than %ItemLimit%. }注意上面例子的首行包含小括号. 小括号表示这个 if 语句包含 表达式. 如果没有它们, 那行将被视为 "非表达式 if 语句", 并且因此需要使用百分号括住 ItemLimit (这样的 if 语句被限制为只能包含简单的比较运算符, 而不能包含数学运算符或像 "AND" 和 "OR" 这样的联合运算符). 数学:要执行数学运算,请使用冒号-等号运算符(:=)来把表达式的结果赋值给变量,例如: NetPrice := Price * (1 - Discount/100)请参阅 表达式 来了解数学运算符的完整列表. 剪贴板: Clipboard 变量是特殊变量, 因为它包含了 Windows 剪贴板中当前的文本. 即使如此, 它的用法也和普通变量一样. 例如, 下面这行将显示剪贴板当前的内容: MsgBox %clipboard%要改变剪贴板的内容, 请参考下面的例子, 它用新文本替换了剪贴板的当前内容: clipboard = A line of text.`r`nA second line of text.`r`n在上面, `r 和 `n (重音符后跟着字母 "r" 或 "n") 用来表示两个特殊字符: 回车和换行. 这两个字符在文本中开始新行, 就像用户按下了 Enter 键. 要追加文本到剪贴板 (或其他任何变量), 请参照此例: clipboard = %clipboard% And here is the text to append.请参阅 剪贴板 和 变量 章节了解详情. 反复重复一系列动作要多次连续地重复执行一些操作, 请使用 循环. 下面的循环会显示三次 MsgBox: Loop 3 { MsgBox This window will be displayed three times. }您还可以在单词 Loop 后指定变量, 这可以用于循环次数在脚本某个位置定义的时候: Loop %RunCount% { Run C:\Check Server Status.exe Sleep 60000 ; 暂停 60 秒. }在上面的例子中, 循环会执行指定的次数, 但是如果 RunCount 的值为 0, 则会完全跳过循环. 当一个或多个条件改变时循环还可以终止它自己. 下面的例子中当用户按住 F1 键时会重复点击鼠标左键: $F1:: ; 把 F1 键设置为热键 ($ 符号会有助于下面 GetKeyState 的 "P" 模式). Loop ; 由于没有指定数字, 所以这是个无限循环, 直到遇到内部的 "break" 或 "return". { if not GetKeyState("F1", "P") ; 如果此状态为 true, 那么用户实际已经释放了 F1 键. break ; 中断循环. ; 否则 (由于上面没有 "中断"), 继续点击鼠标. Click ; 在当前指针位置点击鼠标左键. } return在上面的例子中, 当用户按下 F1 键时, 循环会检测到并通过 break 命令停止它自己. Break 会使得执行跳转到循环闭括号后的行. 另一种实现此目的的方法是使用 "while" 循环: $F1:: while GetKeyState("F1", "P") ; 当 F1 键实际被按住时. { Click } return上面的示例演示了一般用途的循环. 对于更多特殊的需要, 请考虑下面这些循环: 文件读取/写入循环: 逐行读取文本文件的内容, 每次一行. 这可以用来一行接一行地把文件转换成不同的格式. 它还可以用来搜索匹配条件的行. 文件和文件夹循环: 获取指定的文件或文件夹, 每次一个. 这可以用来对符合条件的文件或文件夹进行操作. 解析循环: 从一个字符串中获取子字符串, 每次一个. 这可以用来很容易的分解像 "Red,Green,Blue" 这样的字符串为三个子片段. 注册表循环: 获取指定的注册表子键的内容, 每次一个项目. 操作文件和文件夹要添加文本到文件的末尾 (或创建新文件), 请使用 FileAppend, 如下面的例子所示. 注意它使用 `n (换行符) 来开始新的文本行: FileAppend, A line of text to append.`n, C:\My Documents\My Text File.txt要覆盖现有的文件, 请在 FileAppend 之前使用 FileDelete. 例如: FileDelete, C:\My Documents\My Text File.txt其他一些常用的文件和文件夹命令是: FileRead: 读取整个文件的内容到变量. 文件读取循环: 逐行读取文本文件的内容. IfExist: 检查文件或文件夹是否存在. FileSelectFile 和 FileSelectFolder: 显示可以让用户选取文件或文件夹的对话框. FileDelete/FileRecycle: 删除/回收一个或多个文件. 使用 FileRemoveDir 来删除整个文件夹. FileCopy/FileMove: 复制/移动一个或多个文件. 使用 FileCopyDir/FileMoveDir 来复制/移动整个文件夹. 文件和文件夹循环: 获取文件夹中包含的子文件夹和文件, 每次一个. FileSetAttrib 和 FileSetTime: 改变一个或多个文件的属性或时间戳. IniRead, IniWrite 和 IniDelete: 创建, 访问和操作标准格式的 INI 文件. RegRead, RegWrite, RegDelete 和 注册表循环: 操作 Windows 注册表. 其他功能概述请参阅 命令列表 了解每个命令的概述.
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |