小鸟学AHK.docx
《小鸟学AHK.docx》由会员分享,可在线阅读,更多相关《小鸟学AHK.docx(24页珍藏版)》请在冰豆网上搜索。
小鸟学AHK
小鸟学AHK
(1)之运行程序或打开文档
2008-06-2701:
33
AHK就是AutoHotKey,是一款免费的、Windows平台下开放源代码的热键脚本语言。
亲爱的朋友,叫我怎么向你推荐它呢!
COOL,对,就是酷,那么多干巴巴的介绍我不想COPY,如果你掌握了它,哪怕只是会一点点,也足够你炫耀了.比你身边所谓的电脑高手还要风光.这个理由够了吧?
那么AHK能做什么呢?
对不起,我说不清楚,因为我也是小鸟,你正在看的垃圾本来就是本小鸟的学习笔记而已.但我可以肯定的一点是,你这个人能做的事它都能做,你所有在电脑里的行为除了人类主观的部分它都可以替你完成得更快更好.而这也只是它初级的部分.更厉害的是它可以做程序,甚至可以做病毒(听说的)
慢着别走,我知道你不想学编程,我也不想,AHK绝对不会拒绝你我这样的懒人的.它其实非常简单,非常容易非常的...cool!
只要你有一点点分析问题的逻辑推理能力就能上手.当然,要达到高级的境界还是应该有一些编程基础的.写批处理的能力就完全够了.
我一向认为男人至少要擅长一项运动,一种乐器,一种编程....和拿手的几个小炒.什么?
你不是男人?
OK,把照片和电话发给我.其实我也不合格因为我还不会什么乐器,扯远了.总之你不会后悔的.知道那些会做图做网页甚至会给别人下木马的骇客们有什么感觉么,对,很爽的一种控制与创造的感觉,一个男人如果没有体会到这种感觉,多遗憾!
先说这么多,先介绍一些AHK的基础知识,用过热键启动程序的软件么?
我们今天来实现它.
AutoHotKey(安装版下载|绿色版,下文都简称为AHK)。
第一次下载AHK的朋友建议下载安装版,以后升级的话,下载绿色版,然后覆盖到AHK的安装目录。
下载安装版的好处是:
系统会自动关联.ahk文件。
在AHK目录里建立AutoHotKey.ini文件,用记事本打开输入代码,然后运行AHK程序就可以实现这些代码的功能.
1运行程序或打开文档
Run(运行)命令用来运行或打开程序、文档、网址(URL)或快捷方式,例如:
Run,Notepad
Run,C:
\MyDocuments\AddressList.doc
Run,
Run,C:
\MyDocuments\MyShortcut.lnk
Run,mailto:
someone@
上面例子中的命令都可以指配给含有热键标识(hotkeylabel)的热键。
在下面的第一个例子里,被指配的热键是Win+N,而第二个是Control+Alt+C:
#n:
:
Run,Notepad
^!
c:
:
Run,calc.exe
上面的例子都属于单行热键,因为它们都只是由一个命令组成。
如果需要热键执行更多的命令,就要把第一行命令放到热键定义式的下面,并且使最后一行为return(返回)。
例如:
#n:
:
Run,
Run,Notepad.exe
return
上面的Notepad.exe(记事本)、calc.exe(计算器)等都是系统程序,如果要运行非系统程序则需要指定它的完整路径:
Run,%ProgramFiles%\Winamp\Winamp.exe
在上面的例子中,%ProgramFiles%是操作系统支持的环境变量(environmentvariable)。
之所以使用它而不是用像C:
\ProgramFiles这样的路径,那是因为这样可使得脚本有更好的可移植性,就算别的电脑的系统不是在C盘也可以正确执行命令。
如果希望脚本在程序或文档关闭后才继续执行下一步,那么就需要使用RunWait(运行等待)命令来代替Run命令。
例如在下面的这个例子中,MsgBox(对话框)命令部分将不被执行,直到用户关闭了记事本之后才继续:
RunWait,Notepad
MsgBox,任务完成(记事本已被关闭);弹出对话框提示任务完成.
;后的文字是注释,对程序没有任务影响.
小贴士-Ctrl、Alt、Shift在AHK怎么表示?
WIN的符号是#
Ctrl的符号是^
Alt的符号是!
Shift的符号是+
如果你想按下“Ctrl+Alt+Shift+Win+Q”(这个快捷键真牛×。
--b)来启动QQ的话,可以这样写:
^!
+#q:
:
runD:
\qq\qq.exe
快增加自己的快捷键吧,保存AutoHotKey.ini后,右击系统托盘那个H图标,选择“reloadthisscript”重启AHK,要注意,每次修改脚本后都要重启脚本。
(除介绍部分主要来自AHK帮助文件)
小鸟学AHK
(2)之发送键击或点击动作
2008-06-2723:
47
关于按键精灵,我认为它很一般,虽然国内的支持率很高,使用者很多,有点地头蛇垄断的感觉.对于小鸟来说,按键精灵太弱了,要实现稍微复杂一点的功能就要借用让人头疼而且为数不多的C语言插件函数,那我还不如直接编程算了.如果AHK也支持CS-script,那按键精灵就完败了.据说AHK很快就支持了.
当然对于我们小鸟来说,先不考虑这些也不用什么语言,AHK常用的命令就非常强大能做很多事,可以这么说,AHK的初级用户就相当于按键精灵的高级用户了.
就内存占用来说,按键精灵也太大了,不适合做系统常驻程序,而AHK一般只有1到2M.
我以前用按键精灵做过一些简单的事,比如在魔兽世界里练习附魔什么的,完全就是靠鼠标找点不停地来回点击,faint.现在已经完全放弃它.不过如果你有使用按键精灵的基础,相信会更容易理解和上手AHK的.
闲话到此,今天我们的课程是发送键击或点击动作
使用Send(发送)命令来发送键击动作到激活窗口(指最前面的窗口)。
在下面的这个例子里,Win+S变成键入签名的热键。
按下软件前必须确认窗口(例如编辑器或电子邮件草稿窗口)处于激活状态:
#s:
:
Send,Sincerely,{enter}JohnSmith
return
在上面的例子中,除了{enter}意外所有的字符都被逐字发送,因为{enter}模拟了回车键。
下面的将举例说明一些其它常用的特殊字符:
Send,^c!
{tab}pasted:
^v
上面的例子将会发送Control+C(复制),然后是Alt+Tab(切换窗口),最后是发送字串“pasted:
”并接上一个Control+V(粘贴)。
鼠标点击:
对某个窗口发送点击动作需要测定点击位置的X轴和Y轴坐标。
这可借助AutoHotkey附带的AutoScriptWriter或者WindowSpy来实现。
下面就是应用WindowSpy的方法:
运行WindowSpy(从开始菜单或者在AutoHotkey的托盘图标上点击右键出现的菜单中可找到它);
通过点击目标窗口的标题栏、使用Alt+Tab进行切换或者其他方法来激活窗口(WindowSpy将一直是最上层窗口);
移动鼠标到目标窗口上需要进行点击的位置,记下此时WindowSpy中显示的坐标值(或者按Shift-Alt-Tab来切换到WindowSpy的窗口,它显示的坐标值将停止变化,因此可以方便用户复制和粘贴坐标值)
在MouseClick(鼠标点击)命令中使用上面获得的坐标值,例如:
MouseClick,left,112,223
如果只需要移动鼠标而不用点击的话,请使用MouseMove(鼠标移动)命令。
要拖动鼠标,请使用MouseClickDrag(鼠标拖动)命令。
我现在用的一个登录代码
:
:
/d:
:
Send,wildtoy{Tab}123456{Enter}
return
;你在XX登录框里只要输入/d,它就会把输入wildtoy,切换到密码输入框输入123456,最后回车,为什么要用/号呢,无论你用什么都行,你就是:
:
aa:
:
也可以,问题是你不想打字打到aa的时候突然变成自己的用户名和密码吧
:
:
/mail:
:
zhengwang79@
;经常要输入电邮地址,电邮太长怎么办,像这样以后只要输入/mail回车或空格,就会变成电邮了.
下面附上常用的一些按键列表
鼠标(WindowsNT/2000/XP或更高级版本)
LButton-鼠标左键
RButton-鼠标右键
MButton-鼠标中键或滚轮
WheelDown-鼠标滚轮向下滚动(向着身体的方向)
WheelUp-鼠标滚轮向上滚动
以下定义仅支持Windows2000/XP及更高级版本:
XButton1-只有某些鼠标才会有这个按键
XButton2-只有某些鼠标才会有这个按键
键盘
注意:
单个字母键和数字键的名字就是它上面的符号,因此下面将不列出来,例如b就是代表"b"键,而5就是"5"键
Space-空格键
Tab
Enter(或Return)
Escape(或Esc)
Backspace(或BS)-退格键
Delete(或Del)
Insert(或Ins)
Home
End
PgUp
PgDn
Up
Down
Left
Right
ScrollLock
CapsLock
NumLock
NumpadDiv-(小键盘上的)除号键/斜杠
NumpadMult-(小键盘上的)乘号键/星号
NumpadAdd-(小键盘上的)加号键
NumpadSub-(小键盘上的)减号键
NumpadEnter-(小键盘上的)回车键
当Numlock的状态是关闭时:
NumpadDel
NumpadIns
NumpadClear-在大多数键盘上就是指Numpad5这个按键
NumpadUp
NumpadDown
NumpadLeft
NumpadRight
NumpadHome
NumpadEnd
NumpadPgUp
NumpadPgDn
当Numlock的状态是打开时:
Numpad0
Numpad1
Numpad2
Numpad3
Numpad4
Numpad5
Numpad6
Numpad7
Numpad8
Numpad9
NumpadDot-小数点(句点)
从F1到F24-大多数键盘上面的那一排功能键
AppsKey-用来调用右键菜单的按键
LWin-左边的Win键(徽标键)
RWin-右边的Win键(徽标键)
Control(或Ctrl)
Alt
Shift
注意:
在大多数情况下,下面这六个按键是不支持用在Windows95/98/Me系统上的,请使用上面列出的按键代替:
LControl(或LCtrl)-左边的control键
RControl(或RCtrl)-右边的control键
LShift
RShift
LAlt-左边的Alt键
RAlt-注意:
如果您的键盘布局是用了AltGr键而不是RAlt(即没有右边的Alt键),您可能就要通过<^>!
这样的格式来令它变成热键前缀,详细说明请看这里。
此外,,"LControl&RAlt:
:
"将使得AltGr键本身变成热键。
PrintScreen
CtrlBreak
Pause
Break
小鸟学AHK(3)之创建脚本
2008-07-0318:
25
这几天补数据和找工作。
主要还是因为看到了别的AHK爱好者的博客,受打击了。
看来我还真的是鸟中鸟啊。
到底继续不继续下去呢,反正也没人瞅,算是意志的锻炼吧
今天我们讲创建脚本
有人问了,装了软件学了前两课的代码了,往哪写啊,怎么实现功能啊,
别急有三种方式:
1.建个记事本文件,改扩展名为ahk,比如test.ahk,用记事本软件打开编辑就行了。
双击这个文件就可以运行,不过每运行一个脚本都会在托盘中多出一个图标。
2.把test.ahk编译成exe文件,这样你就可以发给朋友了,打开AHK所在文件夹下的Compiler文件夹,双击里面的Ahk2Exe.exe。
然后依次浏览文件:
要编译的AHK文件,编译后的exe文件名,编译后的exe要显示的图标。
其他一般不用输入。
如下图(呵呵没图,谁想看图说声我发上来)选择好后,点击convert。
3.打开AHK所在的文件夹,新建一个文本文件:
AutoHotKey.ini。
用记事本编辑,你可以把你所有的脚本都写在里面。
总结:
1和2会在右下角出现很多图标,晕哦哪个是哪个啊。
3是很整洁了就一个文件实现所有功能,但若是代码很长很长那编辑起来也会很麻烦很麻烦。
。
。
咋办呐?
#Include用这个,意思是载入文件,作用相当于把那个文件内容复制到当前位置
比如我的AutoHotKey.ini里面的内容是
#Includepm.ahk ;同目录下闹钟代码
#Includemyahk/tc.ahk;同目录下的myahk目录下的totalcommander软件有关的代码
#IncludeC:
/game.ahk ;C盘根目录下的游戏中用的代码,
这样是不是整洁多了,既保持了一个图标,也方便了每个脚本的编辑与整理,当然我建议还是集中放到一个目录下了
今天的课很简单,但很重要哦
如果有比我还菜的鸟,一定要在下面通知我,让我也高兴一下
小鸟学AHK(4)之高级教程:
热键
2008-07-1023:
52
有朋友问了一些热键和热字符串的高级用法,本来我是想给如我一般的菜鸟一个入门的介绍,既然问到了,不回答面子过不去,可是俺也不会啊~~回头恶补了一下,发现要写成简易的文字还真是难,因为原文已经非常简易了。
。
。
。
只好原般照抄下来,关于热键和热字符串的简单用法看(1)就可以了,想深入系统学习的有志高手看下面吧。
原文来自yonken翻译的AHK的帮助文档。
下章发热字符串,很想快点过去这段,给大家发些应用的小脚本。
别着急啊
热键,也就是快捷键,可以用来触发某些指定的动作(例如运行一些程序或宏指令(Macro))。
下面这个例子中Win+N被设置为运行记事本的一个快捷键,井号[#]代表Win键(徽标键):
#n:
:
RunNotepad;“开始→运行”中可运行的程序都可以使用,其他程序需要指定路径
return
上面的最后一行的"return(返回)"用以表示此热键的结束。
不过,如果此热键只需要处理一行命令的话,那一行命令就可以放到双冒号的右边(不需要空格),换句话来说就是return(返回)可以省略了:
#n:
:
RunNotepad
要使一个热键有更多调节键,只需把它们连续列出即可。
下面这个例子中^!
表示Control+Alt:
^!
s:
:
MsgBox您按了Ctrl+Alt+S.
return
值得注意的是,和其它常用的热键一样,它们是有一个先后顺序的,例如上面的例子中,如果先按下S键然后才按Control和Alt将不能触发热键。
举个例子来说,我们用Ctrl+Alt+Del来调出Windows任务管理器,同样也是有个顺序的,您可以自己实践一下,以下不再说明。
您可以使用下列调节键来定义热键:
符号
相关描述
#
Win(徽标键)
!
Alt
^
Control
+
Shift
&
&可用在两个按键(包括鼠标按键)之间来组合它们成为一个自定义的热键。
详细说明请看下面。
<
使用成对按键(如Alt、Ctrl、Win)中左边的一个。
例如
a和!
a差不多,但是
a是只有当按下左边的那个Alt时才会触发热键。
此功能不支持Windows95/98/ME。
>
使用成对按键(如Alt、Ctrl、Win)中右边的一个。
同上,此功能不支持Windows95/98/ME。
<^>!
AltGr。
如果您的键盘布局中AltGr键代替了右边的Alt键,这一系列的符号就是用来表示AltGr键的(仅支持WindowsNT/2k/XP或更高级版本)。
例如:
<^>!
m:
:
MsgBox您按了AltGr+m.
<^
m:
:
MsgBox您按了左边的Control+左边的Alt+m.
*
通配符:
只要包含有指定调节键的按键被按下即触发热键,经常用在映射(Remap)按键或按钮的时候。
例如:
*#c:
:
RunCalc.exe;Win+C,Shift+Win+C,Ctrl+Win+C等等,只要有Win+C即触发热键。
*ScrollLock:
:
RunNotepad;按ScrollLock后运行记事本,不管是否同时有control/alt/shift/win按键按下。
此功能不支持Windows95/98/ME。
~
如果自定义的热键和系统/程序原有的热键相同,则这些热键同时触发。
在以下的两个例子里,当用户按下鼠标右键后,自定义的热键功能和系统/程序原有的右键菜单将同时触发:
~RButton:
:
MsgBox您按下了鼠标右键
~RButton&C:
:
MsgBox您按下了C键和鼠标右键
需要说明的是:
在上面的例子中若没有~(即RButton)则将屏蔽原有的右键菜单,另外,一些专门用来代替alt-tab的按键将总是忽略这一设置,此功能不支持Windows95/98/ME。
$
此符号只有当脚本使用Send(发送)命令发送的按键正好包含有热键本身的时候才会用到。
在不同的系统上使用$前缀运行起来会有一些变化:
在WindowsNT4/2k/XP或更高级版本:
将强制使用键盘钩子(keyboardhook)来执行热键。
它的副作用就是阻止了Send(发送)命令触发热键。
使用$前缀与使用指定的#UseHook等效。
在Windows95/98/Me以及AutoHotkeyv1.0.23以上:
在其线程(thread)的执行过程中热键将失效,此后才重新生效。
它的副作用是就算#MaxThreadsPerHotkey被设置为大于1也跟设置为1一样。
UP
UP通常写在一个按键名后面,用来表示当某按键被松开后触发热键而不是在其被按下后。
下面的例子把左边的Win键映射(替换)成左边的Control键:
*LWin:
:
Send{LControlDown}
*LWinUp:
:
Send{LControlUp};这样当左边的Control键坏了的时候就可以用左边的Win键来代替它。
注意:
并非完全替代,例如当按下LWin+Alt+Del的时候,并不会像按下Ctrl+Alt+Del一样出现Windows任务管理器。
"Up"还可以配合一些常用的热键,例如:
^!
rUp:
:
MsgBox您按下并松开了Ctrl+Alt+R.
此功能不支持游戏操纵杆按钮。
同时还要求在v1.0.28版本以上以及WindowsNT4/2000/XP或更高级版本才能有效。
(查看按键列表获得完整的键盘/鼠标/游戏操纵杆按键名列表)
可以把热键标记当作是普通标记来使用:
您可以使用Gosub/Goto命令转到指定的标记,也可以定义多个热键标记到相同的子程序,例如:
^Numpad0:
:
^Numpad1:
:
MsgBox按下Control+Numpad0或Control+Numpad1都会显示此信息。
return
如果一个热键没有定义任何动作,则这个按键或组合键将被屏蔽。
下面的这个例子就屏蔽了右边的Win键:
RWin:
:
return
仅在WindowsNT,2K,XP及其上平台有效的功能:
您可以使用"&"连接两个按键来自定义一个组合热键。
在下面的这个例子里,您可以按着小键盘上的0然后再按下1来触发热键:
Numpad0&Numpad1:
:
RunNotepad
Numpad0&Numpad2:
:
RunCalc
在上面的例子里,Numpad0是个前缀按键。
正如下面的这个例子一样,前缀按键也可以设定其自己的动作,但只有当按键被松开的时候才被触发,而且在按下按键的时候不会更改任何热键:
Numpad0:
:
WinMaximizeA;最大化激活窗口。
滚动鼠标滚轮(向上滚动或向下滚动)可以被定义为热键,例子:
MButton&WheelDown:
:
MsgBox您按着鼠标中键同时向下滚动了滚轮。
^!
WheelUp:
:
MsgBox您按着Control+Alt同时向上滚动了鼠标滚轮。
还有一个功能是控制Numlock,Capslock,或Scrolllock这些键,使其保持开着或关闭的状态。
例如:
SetNumlockState,AlwaysOn
Windows内置的热键如Win-E(#e)和Win-R(#r)可通过在脚本中为它分配其他动作而达到屏蔽的目的。
详细说明请查看撤销或屏蔽热键部分。
取替Alt-Tab:
AltTab和ShiftAltTab是两个比较特殊的命令,只跟热键结合使用才会有用,它们是用来取替Alt-Tab和Alt-Shift-Tab的。
例如,在下面这个例子里,你可以使用左边的Alt结合鼠标滚轮上下滚动来代替Alt-Tab和Alt-Shift-Tab进行切换。
LAlt&WheelDown:
:
AltTab
LAlt&WheelUp:
:
ShiftAltTab
类似地,只用鼠标也完全可以取替Alt-Tab,像下面一样,按下中键将显示切换界面,然后滚动鼠标滚轮即可进行切换,再次按下中键即可切换到选定窗口并退出切换界面:
MButton:
:
AltTabMenu
WheelDown:
:
AltTab
WheelUp:
:
ShiftAltTab
如果您要用右手在键盘上切换(代替alt-tab),比较方便的方法是这样:
RControl&RShift:
:
AltTab;按住右边的Ctrl键和Shift键来切换
RControl&Enter:
:
ShiftAltTab;按住右边的Ctrl键和回车键来切换()
TheotherAlt-tabactionsavailableare:
1)AltTabAndMenu:
如果存在切换界面则向右切换,否则显示切换界面。
2)AltTabMenuDismiss:
关闭切换界面。
现在您该知道以上所有关于Alt-tab的命令都必须像上面的例子一样分配给热键,否则它们将无效。
注意
由于Numlock键有开启/关闭两种状态,使得每个小键盘上的按键可在不同状态下触发两个不同的热键。
当然,也可以把它们设置为触发同一个热键而不管Numlock的状态如何:
NumpadEnd:
:
Numpad1:
:
MsgBox,热键将忽略Numlock的状态而触发
return
如果(~)结合前缀按键使用过一次,则含有那个前缀按键的热键都会向激活窗口发送前缀按键的动作。
例如在下面的例子里,鼠标右键(RButton)就是前缀按键,上面的第一行命令规定了在按着鼠标右键的同时按下左键将触发热键而显示对话框,而且由于~的存在,右键命令也同时触发(例如显示右键菜单,如果有的话);需要注意的是第二行的命令规定了在按着鼠标右键的同时往上滚动鼠标滚轮将触发热键而显示对话框,而且由于没有~,右键命令将被屏蔽(例如屏蔽右键菜单),然而当此脚本执行的时候,右键命令依然会触发(例如不该出现的右键菜单出现了),因此需要特别注意这一点。
~RButton&LButton:
:
MsgBox您按着右键