AutoHotKey学习.doc_第1页
AutoHotKey学习.doc_第2页
AutoHotKey学习.doc_第3页
AutoHotKey学习.doc_第4页
AutoHotKey学习.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010-05-09AutoHotkey-Window平台下的使用文章分类:IT生活 翻译 :/diary,103098431.shtmlAutoHotkey官网:/转自:/vagrxie/archive/2009/10/21/4710832.aspxDont Repeat yourself在编程领域成为DRY原则,是知道我们编写强壮代码的重要指导原则之一,但是,事实上在其他领域也是一样的(我也不知道此原则是否最先出现在编程领域)。Larry Wall的懒惰是程序员的美德的话我是记忆深刻。作为一个对计算机着迷,对程序无比投入的人,深知学海无涯,但是,正是因为学无止尽,更迫切的需要我们做追求效率的程序员,将重复的工作交给最擅长做重复工作的电脑去做,只有这样,我们才能将更多的时间节省下来,去干我们自己想干的事情。(虽然工作时不太可能-_-!但是起码能赢得一句手快的评价,再次-_-!)学习VIM,Bash,Python,Lua,Qt,SQL都是如此,在这条路上已经走了这么远的我们,又何惧为了更加提高效率,再多学AutoHotkey这样一个小工具呢?既然选择了远方,就只顾风雨兼程,既然选择了编程,就只能忘了远方。-_-!敲自己的键盘,让别人走路去吧。AutoHotkey的名字大家说不上如雷贯耳,久仰大名,起码也是早有耳闻了吧。让我们不惧艰险(又是一种脚本语言-_-!)将AutoHotkey作为饭后甜点好好品尝一下吧吧AutoHotkey是什么AutoHotkey简单来说是一个附带键盘宏录制的脚本工具,但是因为功能太过强大了,叫做自动化工具也许较为合适。从自动化工作这一点来看,AutoHotkey类似Linux下的Bash,都不以脚本语言的逻辑表达能力取胜,专门针对自动化工作设计,只不过Bash是命令行下的,对窗口一无所知,而AutoHotkey可以说是专门针对Windows的窗口平台的,有对快捷键和窗口环境的强大支持。(我见人将其称作GUI-Scripting,实在贴切)也许可以说AutoHotkey就是GUI环境下的Bash。既然Linux下Bash是必学的(的确应该学),那么AutoHotkey也就顺面学了吧。安装配置下载安装我就不多说了,真的不知道这里有个地址可以去看看。善用佳软的AutoHotkey 0级教程,顺面推荐下善用佳软,推崇并介绍了很多好用的免费软件,个人很喜欢。AutoHotkey的脚本是以ahk为后缀的文本文件,用你自己最喜欢的编辑器编辑吧,对于vim来说,已经内置了对ahk的语法高亮,我习惯将AutoHotkey的安装目录添加进环境的PATH中,这样用vim编辑脚本的时候可以直接简单的通过!Autohotkey %来运行脚本。(事实上我将其map到了F5上)但是愿意的话,其实.ahk文件在AutoHotkey安装后是与其关联的,直接双击也可以运行此脚本。初步首先编个最简单的脚本,看看效果先。Run /vagrxie将上一行的代码保存成文本,双击运行,或者用autohotkey运行之,会自动开启你机器上的默认浏览器登录我的博客,建议大家每天运行100次以上这个功能有点像Python的os模块的startfile函数,通过解析后面的字符串来判断应该使用什么与其关联的程序运行。当年工作的时候我有个开机脚本就是用Python此函数做的,功能就是开启工作需要的一大堆程序,VS,MSDN,TotalCommand自动一个一个开启并打开合适的工程或目录。现在这个功能也可以交由autohotkey来完成了。就是一条Run命名。相对来说,对于特定用途的工具(比如Bash,autohotkey)来完成其擅长的事情是会比通用工具(比如Python)来的简洁的,此即一例,Python中虽然也能完成这样的工作(在没有学习Bash前,在linux下它都是我的脚本工具),但是,需要进行import模块,函数调用等一堆难看的东西,autohotkey只需要一个Run。这里之所以讲的多点,是想说明一个特定工具哪怕并不是完成了什么不可能完成的任务,也许仅仅是将任务完成的更加简洁高效和优雅,也是一个工具的用途体现。至于值不值得为了这份优雅付出学习的代价,那就见仁见智了。再看个例子:Run c:DirTest.txt此脚本会自动的用你机器配置的文本编辑器开启此文件。(文件必须存在)但是以下脚本Run notepad.exe c:DirTest.txt无论文件存在不存在都会开始记事本,其中的区别,大家自己体会一下。事实上解析的强度比一般人能够想象的还要厉害,帮助文件中有这个示例:Run mailto:呵呵,什么意思大家都知道,牛吧。可惜我一般不用客户端写邮件-_-!快捷键AutoHotkey自然对Hotkey又特别支持啦,脚本中用符号表示快捷键,一次排列,几个常见的修饰键对应符号是#Win, !Alt,Control,+Shift。那么什么叫依次排列呢?看下面的例子。#space:Run /vagrxie以上的例子即将Win + space 键设定为访问我的博客,运行后发现没有直接的反应,不像上述例子,此时AutoHotkey以trayicon小图标的形式运行于右下角,当你输入Win + space的时候会触发其运行默认的浏览器开启网站,并且一直有效,直到你将其关闭。(此例也推荐大家每日运行100遍与前面第一个例子结合交叉运行效果更佳)同理,要ctrl+space就是space,要ctrl+alt+space就是!space。事实上,一个快捷键可以对应多个命令,也可以多个快捷键对应一个命令,格式有点不多,见下例。#space: Run /vagrxie Run /vagrxie return #a: #b: Run /vagrxie return此例即是在按下Win + space时打开我的CSDN博客和空间两个网页,并且CTRL + WIN + A与CTRL + WIN + B都是打开我的博客。举这两个例子主要是告诉大家AutoHotkey的格式相对比较灵活,比如这里的一对多和多对一。当不是一对一并且写在一行时,需要以return来表示脚本的结束。信息窗口这也许是最先应该说的,MsgBoxMsgBox Text即可以通过MessageBox弹出Text的信息,比较方便可以通过MsgBox弹出Yes Or No等选项,并获取,以判断分支执行程序。MsgBox, 4,?,Yes or No? ifMsgBox Yes MsgBox You Said Yes! else MsgBox You Said No?分支执行的语法比较奇怪,通过if结合MsgBox构成一个IfMsgBox特别应对MsgBox的选择。对窗口的控制个人感觉,对窗口的控制是AutoHotkey的精髓所在,这也是为什么我将其比作GUI下的bash。这里我还是通过从简单到复杂的例子来描述。比如,我现在在编辑文档的时候常常会需要打开AutoHotkey的帮助文档查看,一般我的操作是用鼠标点击其最小化的窗口以激活,或者我也会需要开启gvim以编辑示例程序,也是需要用鼠标去激活,因为用atl+Tab的方式还不如用鼠标快,有了AutoHotkey,我们就有更方便的Hotkey去完成这样的任务了。SetTitleMatchMode 2 #tab: ifWinNotExist, GVIM MsgBox GVIM is not running return IfWinNotActive,GVIM WinActivate,GVIM else WinActivate,Windows Live Writer return如上脚本,先判断是否有标题包含GVIM的窗口存在,不存在则报告GVIM没有运行,不然WIN+TAB键的效果就是在GVim与Windows Live Writer之间切换,非常方便。ifWinNotExist如其名,用于判断一个窗口是否存在,ifWinNotActive也如其名用于判断一个窗口是否激活,第一个参数都是表示窗口标题文字的匹配,匹配模式由SetTitleMatchMode决定。1: A windows title must start with the specified WinTitle to be a match. 2: A windows title can contain WinTitle anywhere inside it to be a match. 3: A windows title must exactly match WinTitle to be a match.我们使用的是2,表示任意位置都匹配,默认是1,速度最快,必须是开始位置匹配。if一组的函数都还支持其他参数,具体的请查看帮助文档了,我这里主要是展示一下用途。实际上AutoHotkey对窗口的控制还有很多强大的功能,一篇小文无法一一尽数,这里再举个例子:SetTitleMatchMode 2 Loop, 10 Random, x, 0, 50 Random, y, 0, 50 WinMove,GVIM, %x%, %y% WinHide,GVIM Sleep, 100 WinShow,GVIM 上述程序运行后,GVIM窗口会变的疯狂。WinMove,WinHide,WinShow的意思都很明显,分别是移动,隐藏,显示窗口,这里有两个有新意的地方,一个是Random和x,y,有点编程知识的人都看出来了,AutoHotkey是允许设定变量的,此处的x,y就是,引用变量的方式是前后各1个百分号,与windows批处理程序的一样。另外就是Loop,10表示的循环结构了。操作记录器这个功能有点像国内一个也比较强大的软件键盘精灵的功能(当年玩那种泡菜网络游戏没有少用过它,单纯的键盘鼠标模拟功能不比AutoHotkey差),就是将键盘鼠标操作记录下来,自动生成AutoHotkey的脚本。省去了重复工作的脚本编写之苦。带GUI界面,截图如下:点击左上角的Record按钮就开始记录键盘鼠标的操作了。然后通过点击录制时屏幕左上角的Stop停止录制。上面的脚本是我录制的一段激活Windows live Writer和最小化Windows live Writer的过程。WinWait, , IfWinNotActive, , , WinActivate, , WinWaitActive, , MouseClick, left, 1159, 889 Sleep, 100 WinWait, xfsdlaf.ahk (E:work) - GVIM, IfWinNotActive, xfsdlaf.ahk (E:work) - GVIM, , WinActivate, xfsdlaf.ahk (E:work) - GVIM, WinWaitActive, xfsdlaf.ahk (E:work) - GVIM, MouseClick, left, 908, 17 Sleep, 100 WinWait, , IfWinNotActive, , , WinActivate, , WinWaitActive, , MouseClick, left, 33216, 32891 Sleep, 100 WinWait, Dont Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer, IfWinNotActive, Dont Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer, , WinActivate, Dont Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer, WinWaitActive, Dont Repeat yourself 懒惰是程序员的美德 AutoHotkey 尝鲜 - Windows Live Writer, MouseClick, left, 1362, 10 Sleep, 100 MouseClick, left, 1387, 10 Sleep, 100 会发现自动生成的代码较人工的代码还是乱了很多-_-!机器嘛,不是那么聪明。上面代码很重要的一个就是通过MouseClick来模拟鼠标的点击,有了这个功能,想干什么都可以了顺面提及一下,也可以通过Send Keys SendRaw Keys SendInput Keys SendPlay Keys SendEvent Keys来模拟键盘的输入。下面是一个当你暂时离开机器却有不想锁屏时可以提出警告的脚本。:)SetTitleMatchMode 2 SetKeyDelay 50 Words = WARNING! DO NOT OPERATE MY COMPUTER! KeyWait, LButton, D run,gvim YouAreUnderMonitored,Max WinWait,YouAreUnderMonitored Send i%Words%Esc此脚本等待鼠标左键单击,然后自动开启gvim并最大化,然后一个字一个字输入警告信息不明就里的人一看估计碰鬼了。小结对于AutoHotkey这样强大的东西,一篇3000来字的小文实在是无法详细尽数其功能,而本人的目的也就是提供给觉得AutoHotKey复杂而不去学习的人尝个鲜,知道了AutoHotkey没有那么难以后,伴随着使用,参考着帮助文档,慢慢的会发现AutoHotkey也是一个离不开的工具了。我就在网上看到很多人狂喊,Linux下什么都好,就是没有AutoHotkey-_-!(其实类似的言论非常多,比如也没有Windows Live Writer equivalent)AutoHotkey0级入门教程:让重复工作一键完成(2007-05-11 13:10:19) 转载分类: 系统工具 作者:xbeta版本:070511/060913出自:善用佳软 AutoHotkey是一个神奇的工具。为了便于新人上手,xbeta写了此篇最最傻瓜的0级入门教程,并被PConline以演绎段氏凌波微步 AutoHotkey 0级入门教程为题转载。1 何为AutoHotkeyAutoHotkey是一个小工具软件,可以简化你的重复性工作。比如要登录某论坛,你只要按一个键,AutoHotkey就会替你打开IE(推荐使用FireFox、Opera或Maxthon),输入网址,输入用户名和密码,回车。你只要有想像力,它可以完成更多工作,参见 AutoHotkey,让win+run如虎添翼,及tag:AutoHotkey。2 下载及安装下载:文件很小,仅1.6MB。见官网下载页,也有zip免安装版。安装:按提示操作即可。我习惯上装在 d:program filesAutoHotkey第1屏是欢迎;点Next。第2屏是版权声明;点I Agree。第3屏是安装内容:如下图。建议选中前2项,不选第3项。第4屏是安装目录:我的习惯是 D:Program FilesAutoHotkey 可以看到,仅需要2.1MB的空间。强大的软件并不需要庞大的体积,能把软件做小是作者功力的体现,是对用户尊重的体现。第5屏是安装成功提示:是否看readme。这个readme其实是它的帮助文件,写得很细。有耐心的就认真拜读,想成高手的必须要研读。(部分中文译本见/)3 应用例1如下图,打开你的文本编辑器(notepad、或gVIM),新建一个文件,把下两行内容复制进去。先保存到一个地方,比如 D:Program FilesAutoHotkeymynew.ahkmsgbox, 这是我的第一个AutoHotkey脚本 n 我支持免费软件尊重版权run, /m/xbeta然后,就可以双击new.ahk看到效果了:先弹出如下提醒你确认后,就打开你的浏览器,来到了善用佳软blog。解释一下:所谓脚本,其实就是一个txt文件。第1句:msgbox是一个命令(或称为函数),AutoHotkey见到它,就知道要弹出一个消息窗口了。后面的“这是我的版权”是参数,在这里就是弹出消息的文字。其中的n表示换行。中间用半角逗号分隔。第2句:类似,函数是run,就是运行。后面的参数就是本blog网址。也就是说,AutoHotkey可以run一个程序,也可以run文档名(如 d:freeware-list.txt),也可以run网址。4 应用例2把下述内容复制到new.ahk中#0:msgbox, 这是我的第一个AutoHotkey脚本 n 我支持免费软件尊重版权run, /m/xbetareturn#1:run, WinActivate, Maxthon ;防止窗口不激活winwait, 网易 ;等待网页加载成功(至少title显示出来)sleep, 500 ;保险起见,再等0.5秒(视网速)send, myidtabpasswordenter ;模拟键入用户名、密码、回车return再运行没反应了?因为我们定义了2个热键,一是win+0,二是win+1,分别调用两段脚本,即分别访问善用佳软和登录163信箱。从上面还可以看到几个新函数名称,详情见AutoHotkey的help。注释和正式语句之间至少一个空格,用半角分号引导,这样有助于日后理解ahk文件,并不执行。5 后记0级教程就写到这里吧。再进步,就需要多动手,多读help中的函数介绍了。隆重推荐yonken兄自动化操作轻松入门系列文章,他致力于传播AutoHotkey和AutoIt,并精心翻译了大量原始文档。我也会陆续写一些应用实例,如AutoHotkeywin run加它更方便,AutoIT3 vs AutoHotkey,AutoHotkey调用Irfanview把24位真彩图片优化到实际色深请关注善用佳软相关栏目。补:xbeta是用gVIM编辑ahk文件的,高亮效果如下:初稿060913,出处/u/46dac66f010005g7作者xbeta,采用CC创作共用协议,可转载,须保留本信息基于AutoHotKey编写的软件自动安装脚本2009-09-01 00:37如何用AutoHotKey这个软件来编写软件自动安装脚本:(以安装极品五笔为例)1.右键选择新建Autohotkey script文件,用下载到的编辑器打开.如图:完整代码如下:(蓝色为程序自建); AutoHotkey Version: 1.x; Language: English; Platform: Win9x/NT; Author: A.N.Other ; Script Function:; Template script (you can customize this template by editing ShellNewTemplate.ahk in your Windows folder);#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.SendMode Input ; Recommended for new scripts due to its superior speed and reliability.SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.Send,#dSleep,200MouseMove,10,10ToolTip,=重要提示=n软件安装期间,不要操作键盘和鼠标,以免发生错误!n若长时间未响应,请按Ctrl+Alt+Del解锁鼠标和键盘!n欢迎大家联系交流!n岚风(风无忌)制作软件自动安装脚本。nQQ:545144121n=重要提示=,10,10BlockInput, OnRun,JDZW.exeWinWait,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。IfWinNotActive,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。,WinActivate,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。WinWaitActive,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。Sleep,300Send,!iSleep,300SendInput,D:Program FilesfreeimeSleep,500Send,!iWinWait,ahk_class #32770,在开始菜单中建立极点程序组么?IfWinNotActive,ahk_class #32770,在开始菜单中建立极点程序组么?,WinActivate,ahk_class #32770,在开始菜单中建立极点程序组么?WinWaitActive,ahk_class #32770,在开始菜单中建立极点程序组么?Sleep,300Send,yWinWait,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!IfWinNotActive,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!,WinActivate,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!WinWaitActive,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!Sleep,300Send,enterBlockInput, OffExit下面给大家一步一步的讲下:运行jdzw.exe(极品五笔安装程序),出现以下界面:先介绍下前几行代码的意思:Send,#d ;模拟键盘发送Win+D键,即最小化所有窗口,这样是为了防止出错Sleep,200;延迟0.2秒MouseMove,10,10;将鼠标移动到桌面的(10,10)处,为了美观ToolTip,=重要提示=n软件安装期间,不要操作键盘和鼠标,以免发生错误!n若长时间未响应,请按Ctrl+Alt+Del解锁鼠标和键盘!n欢迎大家联系交流!n岚风(风无忌)制作软件自动安装脚本。nQQ:545144121n=重要提示=,10,10;提示窗口,注意这是一行,没有回车BlockInput, On;阻断键盘和鼠标的输入,防止程序运行期间被误操作要实现在AU中打开程序,可以用Run命令,即Run,JDZW.exe(这样写要求安装程序和脚本程序在相同文件夹下,不然要加上程序的路径)为了等待安装窗口,加上WinWait,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。其中ahk_class #32770是程序安装窗口的TITLE,后面的是窗口的TEXT,这是为了等待安装窗口出现再执行下面的命令。为了使程序安装窗口为工作窗口,要防止它未激活,利用一下代码实现:IfWinNotActive,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。,WinActivate,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。WinWaitActive,ahk_class #32770,在安装“freeime 6.5标准版”之前,请阅读授权协议。其中Ifwinnotactive,winactivate的意思是如果存在的窗口未激活则激活它,winwaitactive的意思是等待指定窗口被激活。(窗口的Title什么的可以通过程序自带的AU3_SPY工具得到)为了保险,再延迟0.3秒,即Sleep,300Send,!i;模拟键盘按下alt+i,即按下安装窗口的我接受按钮,进入下一步,Sleep,300;延迟0.3秒,等待下个窗口出现SendInput,D:Program Filesfreeime;模拟键盘输入字符串,即输入安装路径D:Program FilesfreeimeSleep,500;延迟0.5秒 等待输入完成(这是为了保险,其实sendinput命令式瞬间完成的)Send,!i;模拟键盘按下alt+i,即按下安装窗口的安装按钮,开始安装程序WinWait,ahk_class #32770,在开始菜单中建立极点程序组么?;等待指定窗口出现IfWinNotActive,ahk_class #32770,在开始菜单中建立极点程序组么?,WinActivate,ahk_class #32770,在开始菜单中建立极点程序组么?WinWaitActive,ahk_class #32770,在开始菜单中建立极点程序组么?;等待并激活指定窗口Sleep,300;延迟00.3秒Send,y;模拟键盘按下Y键同意WinWait,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!IfWinNotActive,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!,WinActivate,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!WinWaitActive,ahk_class #32770,中文 (国际版) - 极点五笔安装成功!;等待安装完成窗口出现并激活Sleep,300;延迟0.3秒Send,enter;发送回车键,完成安装BlockInput, Off;激活键盘鼠标输入Exit;退出脚本好了程序代码写好了,打开AHK2EXE工具选择ICO图标,编译AK文件为EXE文件就完成了AutoHotKey自动登陆QQ2010年8月4日 sea 分享到QQ空间 发表评论 阅读评论 WinWait, Program Manager,IfWinNotActive, Program Manager, , WinActivate, Program Manager,WinWaitActive, Program Ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论