AutoHotKey使用教程.docx
《AutoHotKey使用教程.docx》由会员分享,可在线阅读,更多相关《AutoHotKey使用教程.docx(27页珍藏版)》请在冰豆网上搜索。
![AutoHotKey使用教程.docx](https://file1.bdocx.com/fileroot1/2023-2/3/79ced786-0a67-4226-9cad-d3b130360131/79ced786-0a67-4226-9cad-d3b1303601311.gif)
AutoHotKey使用教程
AutoHotKey使用教程
使用教程
(一)-----何为AutoHotKey
AutoHotKey是一个免费开源的小软件,很小(只有1964KB),但是功能却非常强大,它几乎可以做键盘、鼠标和操纵杆可以做的任何事情。
它可以把人力完全的释放出来,前提只要你编写一个后缀为.ahk的脚本。
如果你愿意,你完全可以把你写的script理解为一个机器人,它可以做你想让它做的任何事情。
AutoHotKey在国外使用的很普遍,国内也有很大的用户群,大家只要Google一下就知道了,AutoHotKey之前的版本是AutoIt2,现在newest的版本是AutoIt3,但是AutoHotKey还是一个比较经典的版本,最新的版本是,建议大家下载一下,有什么使用心得,多交流哈,呵呵。
我会定期在我的博客上更新使用心得,大家多关注啊。
AutoHotKey使用教程
(二)-----一个简单的例子
使用AutoHotKey编写脚本非常简单,现在我们就来开始编写我们的第一个简单的脚本吧。
使用notepad或者其他你熟悉的文本编辑器,新建一个文件,使用.ahk作为后缀名,例如。
把下面的代码拷贝进去,保存退出,双击执行一下。
代码:
MsgBox,你好,欢迎关注风追月博客`n请继续关注哈
run,看到什么结果了吗神奇吗简单吗呵呵
如果感兴趣的话,我还会在后面的章节中,更加详细得讲解。
AutoHotKey使用教程(三)-----定义属于自己的热键
通过本节的学习,你可以自定义热键快速启动常用的程序、文档、目录、网址和WINDOWS的常用功能(如:
增大\减小音量、系统静音开关、弹出\关闭光驱、打开控制面板模块属性等等)。
在日常的工作中,它的确可以帮助您节省不少鼠标频繁点击的时间,从而大大的提高工作效率。
我们先来看一段简单的代码:
#n:
:
RunNotepad
return
在上面的代码中,"#"代表windows键(一种修饰符),"return"表示结束热键定义。
如果一个热键定义中只有一个语句,如上面的例子,那么这条语句就可以放在:
:
的后面,不需要添加"return":
#n:
:
RunNotepad
如果热键包含多个按键,组合键连续的放在一起(不需要考虑顺序),下面的例子即使用^!
来代替Control+Alt:
^!
s:
:
SendSincerely,{enter}JohnSmith;Thislinesendskeystrokestotheactive(foremost)window.
return
你可以同时定义多个热键,它们触发相同的事件,只要把热键“垂直”定义即可。
^Numpad0:
:
^Numpad1:
:
MsgBoxPressingeitherControl+Numpad0orControl+Numpad1willdisplaythismessage.
return
如果你要禁用某个热键,非常简单,只要在return之前不写任何语句即可,下面的例子就禁用的右边的Windows键
RWin:
:
return
AutoHotKey使用教程(四)----一些常用的修饰符
符号
用法
#
Windows键
!
Alt
^
Control
+
Shift
&
逻辑与,把多个按键或鼠标组合成一个自定义键,Windows95/98/Me无法识别
<
一对按键中的左边的按键,如
表示左边的Alt按键
>
一对按键中的右边的按键
*
通配符,表示热键被按下时,即使同时还有其他的按键按下,依然有效
*#c:
:
Run;Win+C,Shift+Win+C,Ctrl+Win+C,etc.willalltriggerthishotkey.
*ScrollLock:
:
RunNotepad;PressingScrolllockwilltriggerthishotkeyevenwhenmodiferkey(s)aredown.
~
热键被触发后,动作不会被阻塞
AutoHotKey使用教程(五)----按键重映射
按键重映射的语法格式:
OriginKey:
:
DestinationKey。
请看下面的例子:
a:
:
b
在上面的例子中体会以下几点:
1)使用键盘敲“a“,会自动映射成”b“
2)敲”Shift+a“呢 B
3)敲”capslock+a“呢 B
4)敲”b“呢 还是b
a:
:
B
1) 使用键盘敲“a“,会自动映射成”B“
2) 敲”Shift+a“呢 B
3) 敲”capslock+a“呢 b
总结:
”Shift+a“跟“a“的效果是一样的,”capslock+a“是按映射后在转换大小写。
鼠标的重映射语法跟按键重映射一致。
RAlt:
:
RButton;MakestherightAltkeybehaveliketherightmousebutton.
RWin:
:
Return ;DisablestherightWindowskeybyhavingitsimplyreturn
使用#IfWinActive/Exist语句可以控制重映射生效的窗口。
#IfWinActiveahk_classNotepad
a:
:
b;Makesthe'a'keysenda'b'key,butonlyinNotepad.
#IfWinActive;Thisputssubsequentremappingsandhotkeysineffectforallwindows.
一段使用键盘控制鼠标的代码,大家有兴趣可以试一试。
*#up:
:
MouseMove,0,-10,0,R;Win+UpArrowhotkey=>Movecursorupward
*#Down:
:
MouseMove,0,10,0,R;Win+DownArrow=>Movecursordownward
*#Left:
:
MouseMove,-10,0,0,R;Win+LeftArrow=>Movecursortotheleft
*#Right:
:
MouseMove,10,0,0,R;Win+RightArrow=>Movecursortotheright
*<#RCtrl:
:
;LeftWin+RightControl=>Left-click(holddownControl/ShifttoControl-ClickorShift-Click).
SendEvent{Blind}{LButtondown}
KeyWaitRCtrl;Preventskeyboardauto-repeatfromrepeatingthemouseclick.
SendEvent{Blind}{LButtonup}
return
*<#AppsKey:
:
;LeftWin+AppsKey=>Right-click
SendEvent{Blind}{RButtondown}
KeyWaitAppsKey;Preventskeyboardauto-repeatfromrepeatingthemouseclick.
SendEvent{Blind}{RButtonup}
return
AutoHotKey使用教程(六)-----鼠标和键盘按键操作列表
鼠标支持以下操作:
LButton RButton MButton WheelDown WheelUp
键盘按键支持以下操作:
Space-thespacebar
Tab
Enter(orReturn)
Escape(orEsc)
Backspace(orBS)
Delete(orDel)
Insert(orIns)
Home
End
PgUp
PgDn
Up
Down
Left
Right
ScrollLock
CapsLock
NumLock
NumlockON
NumlockOFF
Numpad0
NumpadIns
Numpad1
NumpadEnd
Numpad2
NumpadDown
Numpad3
NumpadPgDn
Numpad4
NumpadLeft
Numpad5
NumpadClear
Numpad6
NumpadRight
Numpad7
NumpadHome
Numpad8
NumpadUp
Numpad9
NumpadPgUp
NumpadDot(.)
NumpadDel
NumpadDiv(/)
NumpadDiv(/)
NumpadMult(*)
NumpadMult(*)
NumpadAdd(+)
NumpadAdd(+)
NumpadSub(-)
NumpadSub(-)
NumpadEnter
NumpadEnter
1 a A LWin Control(orCtrl) Alt Shift F1
PrintScreen CtrlBreak Pause Break
AutoHotKey使用教程(七)-----AutoHotkey脚本
AutoHotkey跟tcl等语言一样,是一种解释性语言。
从脚本的头部至结尾顺序执行,除非遇到return,exit或者热键、热字符串。
一个AutoHotkey脚本如果不包含热键、热字符串、OnMessage或者GUI等,就会在文件执行完成后推出,否则脚本会处于idle状态以备相应热键、热字符串等操作。
`的用法类似于c和tcl中的“\”,例如`t(tab),`n(linefeed),and`r(carriagereturn).
Autohotkey中逗号和百分号都有专门的意义,如果要表示字符意义,可以使用`,`%。
MsgBoxThisisok.
MsgBox,Thisisoktoo(ithasanexplicitcomma).
AutoHotkey脚本使用“;”注释,“;”跟在需注释的语句之后,注意语句和分号之间只要要有一个空格。
如果要注意多个语句可以使用/**/
RunNotepad;Thisisacommentonthesamelineasacommand.
/*
MsgBox,Thislineiscommentedout(disabled).
MsgBox,Thisonetoo.
*/
为了增加脚本的可读性和可维护性,有时需要将一个较长的语句拆分成几个较小的语句,可以使用以下几种方法:
1) 一行以"and","or",||,&&或者逗号开始,会自动跟上一句组合成一句。
FileAppend,Thisisthetexttoappend.`n ;Acommentisallowedhere.
%A_ProgramFiles%\SomeApplication\;Comment.
if(Color="Red"orColor="Green"orColor="Blue" ;Comment.
orColor="Black"orColor="Gray"orColor="White") ;Comment.
andProductIsAvailableInColor(Product,Color) ;Comment.
2)这种方法适用于要连接很多行并且方法1不适用的情况。
;EXAMPLE#1:
Var=
(
Line1ofthetext.
Line2ofthetext.Bydefault,alinefeed(`n)ispresentbetweenlines.
)
;EXAMPLE#2:
FileAppend,;Thecommaisrequiredinthiscase.
(
Alineoftext.
Bydefault,thehardcarriagereturn(Enter)betweenthepreviouslineandthisonewillbewrittentothefileasalinefeed(`n).
Bydefault,thetabtotheleftofthislinewillalsobewrittentothefile(thesameistrueforspaces).
Bydefault,variablereferencessuch
把所有要组合在一起的行放在一个圆括号内。
可以使用ahk2exe工具把Script转换成EXE文件(可以选用自己喜欢的图标)。
也可以右键.ahk文件,选“CompileScript”进行编译。
也可以使用命令行:
/in[/out][/icon][/passpassword][/NoDecompile]
Pikka注意了一下,编译后文件会变的比较大。
AutoHotkey脚本允许设置断点,在需要设置断点的地方放上下面两句话就可以了,脚本运行到这个位置就会打印当前的变量。
ListVars
Pause
AutoHotKey使用教程(八)-----变量和表达式
AutoHotkey没有显示地定义一些变量类型,所有的变量都是字符串类型。
AutoHotkey里面的所有的变量都是全局变量,能被文件内任何位置引用。
除非在函数里面声明的,是局部变量,只能在函数内部引用。
AutoHotkey的变量不需要声明直接使用。
变量的名字不区分大小写,长度最长254个字母。
变量的存储有两种方法:
方法1:
使用“=”去定义数字、没带引号的字符串和带%的变量
MyNumber=123
MyString=Thisisaliteralstring.
CopyOfVar=%Var%;Withthe=operator,percentsignsarerequiredtoretrieveavariable'scontents.
方法2:
使用“:
=”去定义数字,带引号的字符串和不带%的变量
MyNumber:
=123
MyString:
="Thisisaliteralstring."
CopyOfVar:
=Var;Unlikeitscounterpartintheprevioussection,percentsignsarenotusedwiththe:
=operator.
同样的,变量的引用也有两种方法:
方法1:
Var=123
MsgBoxThevalueinthevariablenamedVaris%Var%.
方法2:
var:
=123
MsgBox%"ThevalueinthevariablenamedVaris".Var.""
表达式的两个例子
NetPrice:
=Price*(1-Discount/100)
if(CurrentSetting>100orFoundColor<>"Blue")
MsgBoxThesettingistoohighorthewrongcolorispresent.
AutoHotkey支持的运算符包括:
%Var%、++--、**、-!
~&*、*/、> <>=<=、===<>!
=、NOT、AND&&、OR||、:
、:
=+=-=*=/=|=&=^=>>=<<=、,、mod()、round()、abs()
下面这些变量是内嵌在程序中,有特殊的含义,任何脚本都可以引用它们,只能读不能写。
SpecialCharacters:
A_Space,A_Tab
ScriptProperties:
commandlineparameters,A_WorkingDir,A_ScriptDir,A_ScriptName,(...more...)
DateandTime:
A_YYYY,A_MM,A_DD,A_Hour,A_Min,A_Sec,(...more...)
ScriptSettings:
A_IsSuspended,A_BatchLines,A_TitleMatchMode,(...more...)
UserIdleTime:
A_TimeIdle,A_TimeIdlePhysical
GUIWindowsandMenuBars:
A_Gui,A_GuiControl,A_GuiEvent,A_EventInfo
Hotkeys,Hotstrings,andCustomMenuItems:
A_ThisHotkey,A_EndChar,A_ThisMenuItem,(...more...)
OperatingSystemandUserInfo:
A_OSVersion,A_ScreenWidth,A_ScreenHeight,(...more...)
Misc:
A_Cursor,A_CaretX,A_CaretY,Clipboard,ClipboardAll,ErrorLevel
Loop:
A_Index,(...more...)
AutoHotKey使用教程(九)-----函数
一个函数的简单的例子:
Add(x,y)
{
returnx+y ;"Return"expectsanexpression.
}
函数调用时,变量的后面使用:
=
Var:
=Add(2,3);
由于一个函数调用就是一个表达式,所以函数的参数列表里面的变量前面不能加百分号“%”,相反的,字符串要使用引号,请看下面的例子:
ifInStr(MyVar,"fox")
MsgBoxThevariableMyVarcontainsthewordfox.
当一个命令的参数调用函数的时候,如果命令的参数不支持表达式,就必须使用百分号“%”,请看下面的例子:
MsgBox%"Theansweris:
".Add(3,2)
一个函数可以带参数也可以不带参数(类似C中的过程)。
函数的参数列表里的变量是局部变量,除非前面增加修饰符“ByRef”。
Swap(ByRefLeft,ByRefRight)
{
temp:
=Left
Left:
=Right
Right:
=temp
}
在上面的例子中,参数列表里的变量前面加了修饰符“ByRef”,这样参数就成为了调用者传递的变量的引用,参数和调用者的变量就指向了内存中的同一块内容。
(类似C中的传地址调用,如果不加修饰符“ByRef”,就是传值调用)
使用“ByRef”还可以使函数返回多于一个返回值。
AutoHotkey函数支持可选参数,只要在可选参数的后面加个等号即可。
Add(X,Y,Z=0)
{
returnX+Y+Z
}
如果给函数传递了3个值,可选参数就被忽略,否则就使用默认值。
AutoHotkey里面也有局部变量,全局变量,静态变量的概念,涵义跟C语法相同,用法类似,下面主要讲一下不同点:
函数内部在要使用全局变量的之前,必须再声明一下。
LogToFile(TextToLog)
{
globalLogFileName;Thisglobalvariablewaspreviouslygivenavaluesomewhereoutsidethisfunction.
FileAppend,%TextToLog%`n,%LogFileName%
}
如果有较多的全局变量,就可以在第一行使用global,这样就认为后面的变量都是全局变量。
SetDefaults()
{
global;Thiswordcanbeomittedifthefirstlineofthisfunctionwillbesomethinglike"localMyVar".
Var:
=33;Assigns33toaglobalvariable,firstcreatingthevariableifnecessary.
localx,y:
=0,z;Localvariablesmustbedeclaredinthismode,otherwisetheywouldbeassumedglobal.
;...andsoon.
}
在定义变量的时候,同种类型的变量之间使用逗号隔开
globalLogFileName,MaxRetries:
=5
staticTotalAttempts=0,PrevResult
可以使用“#include”从外部文件引用函数。
(是不是跟C很相似呢,呵呵)
函数使用return返回一个结果推出,也可以使用exit从当前线程中终止退出。
AutoHotKey使用教程(十)---Hotstring使用介绍
“Hotstring”我也不知道怎么翻译,姑且直译为“热字符串”吧。
热字符串主要用来扩展缩写的功能(本质就是替换),当然你也可以用它来触发一些动作,在这一点上,它跟热键没有区别。
:
:
btw:
:
bytheway
在上面的例子中,缩写“btw”会自动的替换成“bytheway”。
(注意,在敲击btw之后,你要增加一个结束符,例如空格,回车和逗号等符号。
下面是一个热字符串用来触发动作的例子。
:
:
btw:
:
MsgBoxYoutyped"btw".
return