命令、函数
#DllImport:创建DLL函数的别名函数,这样可以省略参数而使用默认值调用。它还用于加载十六进制形式的纯机器码,请参阅示例。
#NoEnv / GetEnv():#NoEnv现在用于所有脚本中。使用GetEnv()在脚本中增加环境变量。
#WarnContinuableException:在连续执行时不发出警告,类似主流AutoHotkey的特性。
AhkThread:通过资源中包含的AutoHotkey.dll创建新线程。
ExeThread:不使用AutoHotkey.dll创建新线程,这里使用的方法与AhkExported相同。
ThreadObj:不使用AutoHotkey.dll创建新线程,基于使用ObjShare的COM。
NewThread:不使用AutoHotkey.dll创建新线程。如果需要和已创建的线程通信,最好使用ExeThread或ThreadObj。
Alias:在多线程环境中创建ByRef变量或与其他线程共享变量。
BinToHex:转换二进制数据为十六进制字符串。
BinRun:内存中运行可执行文件。
CreateScript:使用NewThread、AutoHotkey.dll、DynaRun或BinRun在主脚本中创建脚本。
CriticalSection:创建临界区结构并返回它的指针。使用EnterCriticalSection和LeaveCriticalSection进入或离开临界区。多线程环境中离不开临界区。
DirGetParent:获取文件或目录的上一级目录。
ErrorMessage:获取A_LastError的错误信息字符串。
ExtractIconFromExecutable:从EXE或DLL中提取图标。
FileReplace:类似FileAppend,不过同名文件存在时会被替换。
FindFunc(低级):获取到函数的指针。
FindLabel(低级):获取到标签的指针。
GetEnv:获取环境变量及生成全局变量。
HexToBin:把十六进制字符串转换为内存中的二进制数据。
HIBYTE:获取一个值中的高字节部分。
HIWORD:获取一个值中的高字部分。
Input:Input执行时,会实时更新它的目标变量,且脚本中一直可用。在Input执行时可使用SetTimer或AutoHotkey.dll获取这个变量的内容,选项A允许把输入的内容附加到变量,不过在输入开始前变量内容会被清空。
IsBom:检查文件是否包含字节顺序标记。
LoadPicture:加载图片到内存中并返回HBITMAP。
LOBYTE:获取一个值中的低字节部分。
LOWORD:获取一个值中的低字部分。
MAKELANGID:生成LANGID。
MAKELCID:生成LCID。
MAKELONG:生成LONG。
MAKELPARAM:生成LPARAM。
MAKELRESULT:生成LRESULT。
MAKEWORD:生成WORD。
MAKEWPARAM:生成WPARAM。
MCodeH:创建机器码的函数。
OnMessage:新参数允许监测多个窗口的相同消息号码且为每个窗口调用不同的函数。
Progress:同于AutoHotkey v1中的Progress功能。
ResDelete:删除可执行文件中的资源。
ResDllCreate:给dll文件创建资源。
ResExist:检查可执行文件是否存在某资源。
ResPut:把内存中的资源添加到可执行文件。
ResPutFile:把文件添加到可执行文件的资源中。
Send:Send命令增加了Sleep功能,如Send 123{100}456将发送123后休息100毫秒接着再发送456。
sizeof:返回默认数据类型、结构或结构定义的大小,单位为字节,例如MsgBox % sizeof(“TCHAR”)。
SplashImage:同于AutoHotkey v1中的SplashImage。
SplashTextOn / Off:同于AutoHotkey v1中的SplashTextOn。
StrPutVar:把已编码的字符串存入变量。
ToChar:把整型转换为有符号字符型。
ToInt:把整数转换成有符号整型。
ToShort:把整数转换成短整型。
ToUChar:把整型转换为无符号字符型。
ToUInt:把整数转换成有符号整型。
ToUShort:把整数转换为无符号整型。
VarSetCapacity:当变量的缓冲区大小改变、没有使用FillByte且新的容量大于1字节时,则原内容会复制到新缓冲区中。
WinApi:可把WinApi当内置函数使用。
Zip函数:用于压缩或解压缩内存数据的zip函数。ZipCreateFile、ZipAddFile、ZipCloseFile、UnZip、ZipCreateBuffer、ZipAddBuffer、ZipCloseBuffer、UnZipBuffer、ZipRawMemory、UnZipRawMemory、ZipInfo、ZipOptions、ZipAddFolder
对象
ComObjDll:从COM dll中创建COMD对象。
CriticalObject:创建多线程保存对象。
DynaCall:导入Dll函数并定义其参数,这样不需要像DllCall那样每次调用都需要再定义。
ObjByRef:通过引用把变量保存到对象中。
ObjDump:转储对象到内存或文件中。
ObjLoad:从内存或文件中加载转储后的对象。
ObjShare:创建多线程以保存COM IDispatch代理对象。
Struct:创建类似C++的结构对象,可通过对象语法访问和修改。
MemoryModule
可以从内存中加载dll,例如Resource。
MemoryLoadLibrary:类似LoadLibrary,不过这里从内存中加载Dll。通过它可以加载一个dll多次来实现实时多线程。
MemoryGetProcAddress:类似用于MemoryModule的GetProcAddress。
MemoryFreeLibrary:类似用于MemoryModule的FreeLibrary。
MemoryFindResource:类似FindResource。
MemorySizeofResource:类似用于MemoryModule的SizeOfResource。
MemoryLoadResource:类似LoadResource。
MemoryLoadString:类似LoadString。
变量
NULL:内置变量,等同于FALSE。解析为0。
A_AhkDir:返回当前可执行文件的路径。
A_IsDll:如果来自AutoHotkey.dll的调用则返回真,否则返回假。
A_CoordModeToolTip:返回当前ToolTip的CoordMode:0 = Client | 1 = Window | 2 = Screen。
A_CoordModePixel:返回当前Pixel的CoordMode:0 = Client | 1 = Window | 2 = Screen。
A_CoordModeMouse:返回当前的鼠标坐标模式:0 = Client | 1 = Window | 2 = Screen。
A_CoordModeCaret:返回当前的光标坐标模式:0 = Client | 1 = Window | 2 = Screen。
A_CoordModeMenu:返回当前的菜单坐标模式:0 = Client | 1 = Window | 2 = Screen。
A_DllPath:返回当前模块路径(dll或exe)。
A_DllDir:返回当前模块路径(dll或exe)。
A_ModuleHandle:等同于GetModuleHandle(NULL),不过当使用MemoryModule时返回当前AutoHotkey.dll的模块句柄。
A_ScriptStruct:返回内部g_script结构的指针。
A_GlobalStruct:返回内部g结构的指针。
编译
编译AutoHotkey:原始的AutoHotkey只能通过AutoHotkeySC.bin编译。而AutoHotkey_H可以编译任何AutoHotkey二进制文件(AutoHotkey.dll、AutoHotkey.exe、AutoHotkeySC.bin)。就可以保持具有执行其他脚本的AutoHotkey完整功能。已编译的AutoHotkey.exe和AutoHotkey.dll可通过/E选项执行非编译时包含的脚本。
Ahk2Exe:fincs Ahk2Exe编译器的自定义版本,支持AutoHotkey_H功能。
资源库:可以在exe或dll的资源中包含库函数(资源类型必须为“LIB”,如LIB/WATCHDIRECTORY.AHK)。 的AutoHotkey.dll可以自动从exe文件中加载库函数(注:如果源文件加密了,则两个可执行文件必须使用相同的密码)。AutoHotkeySC.bin不支持这个功能。
资源的压缩与加密:Ahk2Exe支持压缩和加密资源文件,AutoHotkey会在内部解压缩并解密文件。UnZipRawMemory()可用来解压缩和解密脚本中的资源文件。
AutoHotkey.dll模块
AutoHotkey.dll:支持COM的AutoHotkey模块可用于多线程,且可实现将AutoHotkey嵌入到其他程序中。这样可在其他语言中实现AutoHotkey功能,有些功能在其他语言中实现起来可能困难的多。
列出函数
适用于AutoHotkey.exe和AutoHotkey.dl。
ahkIsUnicode:如果dll是Unicode的,则返回真。
ahkFunction:通过SendMessage方法调用函数。主要用于通过AutoHotkey.dll调用dll脚本中的函数或从dll中调用主脚本中的函数。
ahkPostFunction:通过PostMessage方法调用函数(不支持等待至函数返回)。同样主要用于AutoHotkey.dl。
ahkExecuteLine:从给定的行指针处执行脚本。
ahkLabel:Goto(PostMessage)或Gosub(SendMessage)到标签。同样主要用于AutoHotkey.dl。
ahkFindFunction:查找某个函数并返回它的指针。
ahkFindLabel:查找某个标签并返回它的指针。
addFile:添加并可选执行文件中附加的脚本、代码。不适用于由AutoHotkeySC.bin编译成的可执行脚本。
addScript:添加并可选执行文本、内存、变量中附加的脚本、代码。不适用于由AutoHotkeySC.bin编译成的可执行脚本。
ahkExec:临时执行文本、内存、变量中的脚本、代码。不适用于由AutoHotkeySC.bin编译成的可执行脚本。
ahkassign:赋值给变量或变量的指针。
ahkgetvar:从变量中获取值。
ahkPause:暂停脚本。
列出函数
仅适用于AutoHotkey.dll。
ahkdll:从文件中创建新线程,当前线程将终止。
ahktextdll:从字符串、内存或变量中创建新线程,当前线程将终止。
ahkReady:如果某个线程当前正在执行则返回真,否则返回假。
ahkTerminate:终止线程。
ahkTerminate:在ahkdll或ahktextdll中用相同的参数重新创建线程。
其他
ahk_parent:用于区分符合相同条件的多个窗口,ahk_parent必须后跟着空格和窗口Id。ahk_parent必须用在任一Win…或Control…函数中。例如WinActivate, ahk_class #32770 ahk_parent 0x3F4A5
&:返回任意字符串或内置变量的指针,如&A_LoopField or &”Text”。
函数库
除了%A_MyDocuments%\AutoHotkey\Lib的用户库、AutoHotkey目录的标准库及%A_ScriptDir%\Lib本地库中的函数,还会自动包含%A_AhkExeDir%\lib.lnk目标文件夹中的函数。想了解更多信息,请参阅函数库。
静态变量
静态变量在内部保存于单独数组中,这样性能更好。并且ListVars分开显示静态和本地变量。