变量名 |
说明 |
A_LoopField |
存在于解析循环中,整数为什么被解析成单个字符串
|
A_LoopReadLine |
|
A_Index |
当前循环重复的次数,第一次执行时为1 |
Loop |
Loop[,count]指定重复次数 Loop . Parse , InputVar[,Delimeters , OmitChars] Parse:必须使用单词Parse InputVarL需要被解析的变量,不要用百分号将变量名包起来,除非该变量的内容就是需要被解析的 Delimeters:分隔符,参数为空或省略,则依次读取每隔字符 使用CSV,则按都好进行解析 OmitChars:忽略字符,这些字符会从解析出来的字符串的开头和结尾部分移除 |
Loop |
Loop,Read,InputFile[,OutputFile] Read:必须是READ InputFile:输入文件 A_LoopReadLine:存在于文件读取循环中,是一行内容,但是去除换行符 |
A_Tab |
该变量等于tab字符 |
StringSplit |
StringSplit,OutputArray,InputVar[,Delimiters , OmitChars] 用指定的分隔符的将一个字符串分割为一个字符串数组 |
变量 |
变量以字符串形式存储,只包含数字的变量进行数学运算时,自动转换为数值 除了函数中变量,其他变量都是全局的,变量无需声明 变量名:不区分大小写 变量赋值: 方法1:等号运算符,指定未引用的原义字符串或百分号的变量的内容 |
数组 |
数组0号下标中存储的是数组的长度,因此数组的元素是从1开始的 |
RegExMatch |
确定一个字符串中所包含的匹配模式 解析以什么开头,什么结尾 |
|
|
RegExMatch |
RegEx 失败:0 成功:非0 |
|
学习目录扫描获取文件名 |
Files and folders loop |
逐个遍历文件和文件夹 |
|
所谓的数组其实是前缀一样,后缀为连续数字的连续变量而已,因此称之为伪数组例如: Array1 Array2 …… StringSplit创建的也是伪数组 |
A_LiipFileExt |
文件的扩展名,不包括.号 |
A_LoopFileName |
当前取得的文件或文件夹名称(不带路径) |
A_LoopFileLongPath |
这个的绝对路径在相对路径指定的情况下,会先使用相对路径作为前缀,再加上当前文件名,拼接成绝对路径,会有问题。 需要切换进入目录 |
遍历文件 |
Loop , FilePattern [, IncludeFolders? , Recurse?]:获取指定的文件或文件夹,一次一个 FilePattern:单个文件或文件夹的名称,或一个通配符类型 IncludeFolders? 使用下面的数字,或留空使用默认 0:默认不获取文件夹 1:获取所有匹配通配符类型的文件和文件夹 2只获取文件夹 Recurese? 可在文件-Loop里特有的变量 A_LoopFileName:当前文件名称,无路径 A_LoopFileExt:文件的扩展名 A_LoopFileFullPath:当前文件的完全路径,如果FilePattern是相对路径,那么他也是相对路径 A_LoopFileLongPath:文件绝对路径 |
#Include |
#Include FileOrDirName File:如果未指定绝对路径,则认为在脚本自己所在的目录 脚本表现地翱翔被包含的文件内容就在#Include指令的位置出现,非重复包含 作用:加载外部文件的函数 |
Return |
Return[, Expression] |
FileAppend |
FileAppend[,Text , FileName]:在文件的结尾处追加文本,其实就是文件的写操作 需要验证FileAppend所需要写入的文件是否已经创建好了才能追加内容
如果文件不存在,FileAppend会先创建文件,然后追加内容 似乎文件路径能用变量去替代,注意加上””
sPath := "E:\" sSub := "name" ;注意变量与字符串拼接,变量不需要加双引号 sPath3 = %sPath%%sSub%.txt |
Object |
需要查看autoHotKey是否有结构体,最好将读取配置文件的部分用结构体或者类进行封装一下 |
SplitPath |
SplitPath , InputVar [, OutFileName , OutDir , OutExtension , OutNameNoExt , OutDrive InputVar:待解析的文件名的变量名称 OutFileName:不带路径的文件名,包含扩展名 OutDir:文件目录 OutExtension:扩展名 OutNameNoExt:不带路径和扩展名的文件名 OutDrive:驱动器+冒号 |
变量 |
关于变量何时加上双引号? 函数在表达式中被调用,则参数列表中的变量名不要加上百分号,原义字符串加上双引号。
|
ByRef |
引用变量 |
A_LoopFileFullPath |
当前取得的文件的完全路径,但是如果FilePattern包含了一个相对路径,那么这里得到的路径也是相对的 |
Loop , FilePattern |
Loop , FilePattern[,IncludeFolders? , Recurse?] |
变量赋值 |
path1 := "a.txt" ;path2 := path1 ;path2 = %path1% path2 = path1 MsgBox , %path2%
如果想将另外一个变量赋值给另一个变量:要么用 := 形式,不要加%% 要么用 = 形式,加上%% |
FileDelete |
FileDelete , FilePattern FilePattern:等那个文件的名称 要删除文件夹用FileRemoveDir |
global |
函数内部引用或创建的变量默认是局部的,所有局部变量每次在函数被调用时都是以控制开始 引用全局变量 global fileName |
StringReplace |
StringReplace , OutputVar , InputVar , SearchText [,ReplaceText,ReplaceAll?] InputVar:需要进行替换的字符串变量名,不要在变量名外加百分号 ReplaceAll? 如果省略:第一个匹配,如果写成:1,A或All,则全部匹配 |
Clipboard |
内置变量,存储了剪贴板中可以用文本形式表现的内容 用法:用前先清空剪贴板 |
ClipboardAll |
存储了剪贴板中所有内讧,例如图片和带格式的文本 |
InStr |
InStr(inputStr, searchStr [,CaseSensitive = false,StartingPos = 1]) 返回inputStr中首个匹配searchStr的字符串位置 找不到:返回0 StaringPos = 0,则默认从右边开始搜索 |
正则表达式 |
用反斜线,让元字符(转义字符)失去特殊含义,在字符组内转义字符无效 元字符用法: .:任意单字符 *:任意多字符 ?:可选项 +:>=1次 {min,max}:至少min次,至多max次 {num}:num次 […]:[a-z] digit:数字0-9 \d:单个数字 ^:脱字符,搜寻其实位置 $:美元符号,匹配目标字符串末尾
|
StringGetPos |
StringGetPos , pos , InputVar , SearchText[,L#|R#,Offset] pos:返回的子串在字符串中位置,从0开始 L#|R#:省略该参数,从左边开始查找,为1或R时,从右边开始查找 Offset:偏移量,从左边或右边开始体哦啊过多少个字符再开始查找 |
StringLeft/Right |
从字符串左边或右边开始提取一定数量的字符 StringLeft , str , inputVar , count 从一个字符串的左边或右边开始提取一定数量的字符 |
StrLen |
获取字符串长度 StrLen(String) |
SubStr |
与InStr搭配使用 SubStr(String , pos [,length]) 从pos起始点开始向右复制不超过length长度的子串 1代表首字符 |
true,false |
caseSensitive := true,有真假返回值 |
引用 |
x := y两者指向同一个对象 |
对象 |
三个功能:取值,设值,调用方法啊,这里的对象说白了就是映射map |
类 |
AutoHotKey版本:1.1.19.02 class ClassName extends BaseClassName { InstanceVar := Expression static ClassVar := Expression class NestedClass { … } Method() { … } } 创建对象并将其存储到全局,每个类的完整名称存储在object._Class 每次使用new关键字创建类的新实例时都进行求值 调用基类的方法用base.Method() 使用new关键字创建派生对象,会调用基对象的__New()方法 其实这里的__New()就是构造函数 销毁对象用:__Delete
元函数:由对戏那个的基定义的方法,作用:明确定义接受未知键的请求时 如果obj.key尚未赋值,那么会调用__Get元函数, obj.key := value调用__Set obj.key()调用 __Call() |
IniRead |
读取标准格式的,ini文件中的值 IniRead , value , FileName [,Section , key , Default] 这些函数仅支持UTF-16编码的Unicode文件 value:键对应的值 FileName:.ini文件名 Section:ini文件中的段名,包含在方括号中的标题短语 key:键名 Default:如果省略,参数默认为ERROR(当没有找到制定的键时)
格式: [SectionName] Key=Value |
ByRef参数 |
是引用参数,传递大字符串解决了内存 对象字段在ByRef中不会被视为变量
|
class |
能否有多个构造函数,不能 |
while |
可以使用 |
ReadLine() |
Line:=File.ReadLine() |
FileOpen |
返回函数对象 |
MouseClickDrag |
MouseClickDrag , WhichButton , X1 , Y1 , X2 , Y2[,SPeed , R] WhichButton:要点击的按钮 X1,Y1:拖动其实位置x/y坐标 X2,Y2:拖动的目标位置 Speed:移动鼠标的速度 R:会把X1和Y1坐标视为距离当前鼠标位置的偏移 |
StrSplit |
Array := StrSPlit(String [,Delimiters , OmitChars]) 比用StringSplit好,将字符串切分后保存到数组中
对分割\t字符串有效,对于分割,字符串无效 |
A_Tab |
制表符 |
A_Space |
空格算法 |
+ 热键 |
发送SHIFT键击 |
^ |
发送CONTOL键击 |
{F9} |
{F9}表示F9键 |
s |
发送s键击 |
{PrintScreen} |
Print Screen |
Send , +{F9} |
发送Shift+F9 |
^s |
发送Control+s |
Exit |
终止当前线程 |
ExitApp |
完全终止持久娙的脚本 |
FileMove |
功能:只移动文件 移动整个文件夹的内容 |
FileMoveDir |
功能:移动文件夹及其所有子文件夹和文件,还可以重命名文件夹 FileMoveDir , Source , Dest[, Flag] 参数: Source:源目录的名称(不含反斜线) Dest:目录的新路径和名称(不含反斜线),Dest是目录在移动后使用的实际路径和名称,不是Source移动后保存的目录。 本质:就是把Soure下面所有内容放到Dest下面,然后把整个Soure目录删除 Flag: 0, 默认:不覆盖现有文件,如果Dest名称的文件已经存在,操作失败(不用) 1, 覆盖现有文件,但不删除Dest中没有被Source目录中文件覆盖的其他子目录或文件,如果存在相同文件夹,那么Soure会被已入这个文件夹中不覆盖它 2, 覆盖(就用这个) R,重命名目录而不一定它,完全成功或完全失败就用它:不希望部分移动,已存在则失败 |
ExitApp |
作用:无条件终止脚本 形式:ExitAPp[,ExitCode] 参数: ExitCode:-2147483648 ~ 2147483647之间的整数,脚本退出时返回给他的调用者,默认为0,表示成功 |
Gosub |
功能:跳转到制定的标签执行,直到遇到Return 形式:Gosub , Label |
线程 |
含义:事件调用的执行流程,被定义为当前线程。当前线程可以再它自身子程序或由哪个子程序调用其他子程序中执行命令。 注意:AutoHotKey不支持多线程,启动当前线程,其余线程进入休眠状态。 当前线程结束时,最近终端的线程将恢复执行 实例:热键,SetTimer子程序 |
SetTimer |
功能:以指定的时间间隔自动并重复运行子程序 形式:SetTimer[,Label , Period|On|Off,Priority] 参数: Label:跳转目标 Period|On|Off: On”以原来的周期重新启用之前禁用的计时器,不存在就创建 Off:禁用现有计时器 周期:把次参数作为上次Label子程序启动后必须经过的毫秒数来创建计时器 |
WinClose |
作用:关闭指定的窗口 形式:WinClose [,WinTitle , WinText , SecondsToWait , ExcludeTitle , ExcludeText] 参数: WinTitle:窗口标题或识别目标窗口的其他条件 WinText:窗口文本子字符串 SecondsToWait:省略或空,则不等待,如果为0,等待0.5s 如果窗口没有关闭,脚本会继续执行 ExcludeTitle”标题中含有此参数值的窗口将被排除 ExcludeText:文本中含有此参数值的窗口将被排除 注意:此命令发送关闭消息到窗口,结果取决于窗口(可能询问是否保存),多个匹配窗口,则会关闭最上面的窗口 |
PosMessage |
含义:关闭窗口的另一种方法是发送消息,类似于关闭窗口标题栏上的关闭按钮
|
WinKill |
功能:如果WinClose无法关闭窗口,可以用WinClose强制关闭 形式:WinKill[,WinTitle , WinText , SecondsToWait , ExcludeTitle , ExcludeText] 注意:此命令首先会用短暂时间尝试正常关闭窗口,若失败,则会终止窗口进程来强制关闭窗口 已经能实现关闭 |
WinWaitClose |
|
SendInput |
速度比Send快,其他窗口没有机会弹出并打断正发送的键击 把程序里面的Sedn都改成SendInput试试
1.10科学计数法,连续两次文件名无法输入,而且似乎输入完文件名到点击打开按钮之间间隔太短, 输入法出现V |
WinWait |
形式:WinWait[,WinTitle , WinText , Seconds , ExcludeTitle , ExcludeText] 功能:等到指定的窗口出现 参数: Seconds:超时前等待描述,超时后设置ErrorLevel为1,留空表示无线等待,指定0等于0.5 ErrorLevel:表示命令执行成功与否的内置变量,0表示成功 |
WinWaitActive |
功能:等到制定的窗口处于活动或不活动状态 形式:WinWaitActive[,WinTitle , WinText , Seconds , ExcludeTitle , ExcludeText] 参数: Seconds:超时前等待的描述,超时后设置ErrorLevel为1,留空表示无限期等待,制定0等于0.5
总结:凡是关于等待的都有超时时间 |
IfWinExist |
功能:检查是否存在匹配的窗口 形式:IfWinExist[WinTitle , WinText , ExcludeTitle , ExcludeText] |
SetTitleMatchMode |
形式:SetTitleMatchMode , MatchMode|Fast|Slow MatchMode: 1:窗口标题必须以指定的WinTitle开头 2:窗口标题的某个位置必须包含WinTitle 3:窗口标题必须转却匹配WinTitle RegEx:改变WinTitle为正则表达式 默认是1:匹配开头 因此:我的关闭超级画板其实 |
IsObject |
形式:IsObject(expr) 作用:确定值是否为对象 对象类型:对象,文件,函数 |