AHK的常用函数

常用函数

FileExist(FilePattern): 如果 FilePattern 不存在 (如果未指定绝对路径, 则假定 FilePatternA_WorkingDir 中) 则返回空值 (空字符串). 否则, 它返回首个匹配的文件或文件夹的 属性字符串 ("RASHNDOCT" 的子集). 如果文件没有属性 (很少见), 则返回 "X". FilePattern 可以是文件或文件夹的准确名称或包含通配符 (* 或 ?). 由于空字符串被视为 "false", 所以总可以把函数的返回值作为准布尔值来使用. 例如, de>if FileExist("C:\My File.txt") de> 语句当文件存在时则为真, 否则为假. 同样地, de>if InStr(FileExist("C:\My Folder"), "D") de> 语句仅当文件存在 并且 为目录时才为真. 相关命令: IfExistFileGetAttrib.

GetKeyState(KeyName [, "P""T"]):与 GetKeyState 命令(它在按下时返回 D 而弹起时返回 U)不同,此函数在按下时返回 true(1)而弹起时返回 false(0)。如果 KeyName 无效, 则返回空字符串. 请参阅 GetKeyState 了解其他返回值和用法.

InStr(Haystack, Needle [, CaseSensitive = false, StartingPos = 1, Occurrence = 1]): 返回字符串 Needle 在字符串 Haystack 中的出现位置. 与 StringGetPos 不同, 首个字符位置为 1; 这是由于 0 相当于 "false", 使其成为直观的 "未找到" 的提示. 如果参数 CaseSensitive 省略或为 false, 搜索不区分大小写 (不区分的模式取决于 StringCaseSense); 否则, 必须准确匹配大小写. 如果 StartingPos 省略, 那么使用默认值 1 (Haystack 的起始处). 否则, 从 Haystack 的第二个字符开始请指定 2, 从第三个开始为 3, 等等. 如果 StartingPos 超过了 Haystack 的长度, 则返回 0. 如果 StartingPos 为 0 或负数, 搜索将从末尾的偏移处开始反向进行 (从右往左). 不论 StartingPos 的值是多少, 返回的位置总是相对于 Haystack 的首个字符. 例如, "abc" 在 "123abc789" 中的位置总为 4. 在 Occurrence 中指定 2 来返回第二个匹配的位置, 3 为第三个, 等等. 相关项: RegExMatch(), IfInStringStringGetPos.

RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPos = 1]):判断字符串是否包含某个匹配模式(正则表达式)。请参阅 RegExMatch() 了解详情。

RegExReplace(Haystack, NeedleRegEx [, Replacement = "", OutputVarCount = "", Limit = -1, StartingPos = 1]):替换字符串中匹配模式(正则表达式)出现的地方。请参阅 RegExReplace() 了解详情。

SubStr(String, StartingPos [, Length]) [v1.0.46+]: 在 String 中从 StartingPos 开始向右复制不超过 Length 长度的子字符串 (如果 Length 省略, 则默认为 "所有字符"). 对于 StartingPos, 指定 1 从首个字符开始, 2 从第二个开始等 (如果 StartingPos 超过了 String 长度, 则返回空字符串). 如果 StartingPos 小于 1, 那么它被看成是从字符串末尾开始的偏移. 例如, 0 提取最后一个字符而 -1 提取最后两个字符 (但如果 StartingPos 超过了字符串的左端, 则提取又从首个字符开始). Length 是需提取字符的最大数目 (当字符串剩余部分太短时提取的数目会比最大值少). 指定负的 Length 从而在返回字符串的末尾省略这个数目的字符(如果省略了全部或过多字符则返回空字符串)。相关项: RegExMatch(), StringMid, StringLeft/Right, StringTrimLeft/Right.

StrLen(String): 返回 String 的长度. 请参阅 StrLen() 了解详情。

StrSplit(String [, Delimiters, OmitChars]) [v1.1.13+]:使用指定的分隔符把一个字符串分解成多个子字符串并保存到数组中。请参阅StrSplit()了解详情。

WinActive([WinTitle, WinText, ExcludeTitle, ExcludeText]):如果活动窗口匹配指定的条件,则返回其 唯一 ID (HWND)。请参阅 WinActive() 了解详情。

WinExist([WinTitle, WinText, ExcludeTitle, ExcludeText]):返回首个匹配窗口的唯一 ID(HWND)。请参阅 WinExist() 了解详情。

杂项函数

Asc(String): 返回 String 中首个字符的字符编码 (介于 1 和 255 (在 ANSI 版本中) 或 65535 (在 Unicode 版本中) 的数字). 如果 String 为空, 则返回 0.

Chr(Number): 返回与 Number 表示的字符编码相对应的单个字符. 如果 Number 不在有效的字符编码范围内, 则返回空字符串. 常用的字符编码包括 9 (tab), 10 (换行), 13 (回车), 32 (空格), 48-57 (数字 0-9), 65-90 (大写字母 A-Z) 和 97-122 (小写字母 a-z).

DllCall():调用 DLL 文件中的函数,例如标准的 Windows API 函数。请参阅 DllCall() 了解详情。

FileOpen(): 提供面向对象的文件 I/O. 请参阅 FileOpen() 了解详情。

Func(FunctionName) [v1.1.00+]: 如果 FunctionName 没有显式出现在脚本中 (通过例如 #Include 或对 库函数 的非动态调用的方法), 则 Func() 返回 0. 否则, 它返回 到函数的引用. 这可以用来调用函数或获取类似参数的最小和最大数目的 信息.

GetKeyName(Key), GetKeyVK(Key), GetKeySC(Key) [v1.1.01+]: 获取按键的名称/文本, 虚拟按键码或扫描码. Key 可以为 VK 或 SC 码, 例如 "vkA2" 或 "sc01D", 以及两者的组合或键名. 例如, de>GetKeyName("vk1B") de> 和 de>GetKeyName("Esc") de> 都返回 "Escape", 而 de>GetKeyVK("Esc") de> 返回 27.

IsByRef(Var) [v1.1.01+]: 当 Var 为 ByRef 参数且调用者提供了变量时返回 1; 否则当 Var 为其他类型的变量时返回 0.

IsFunc(FunctionName) [v1.0.48+]: 如果 FunctionName 不是显式出现在脚本中 (通过例如 #Include 或对 库函数 的非动态调用的方法), 则 IsFunc() 返回 0. 否则它返回函数的强制参数个数加一的数字(例如 1 为函数可以不需要参数,2 为函数需要 1 个参数等等)。例如, 函数存在时 de>if IsFunc("MyFunc") de> 和 de>if IsFunc(VarContainingFunctionName) de> 语句为真, 否则为假. 在 v1.1.00+, FunctionName 为可以代替函数名的函数引用. 另请参阅: 动态函数调用, A_ThisFunc

IsLabel(LabelName):如果 LabelName 为脚本中的子程序热键热字串(不包括 LabelName 中末尾的冒号),则返回非零数字。例如, 标签存在时 de>if IsLabel(VarContainingLabelName) de> 将为真, 否则为假. 在类似 Gosub, Hotkey, MenuGui 命令中指定动态标签时, 使用此函数可以避免运行时错误. 另请参阅: Labels.

IsObject() [AHK_L 31+]: 判断某个值是否为对象. 另请参阅: 对象.

ListView 和 TreeView 函数:请参阅 ListViewTreeView 页面了解详情。

NumGet(VarOrAddress [, Offset = 0][, Type = "UPtr"]):返回在指定地址+偏移的位置存储的二进制数。请参阅 NumGet 了解详情。

NumPut(Number, VarOrAddress [, Offset = 0][, Type = "UPtr"]):以二进制格式把数字存储到指定地址+偏移的位置。请参阅 NumPut 了解详情。

OnMessage(MsgNumber [, "FunctionName"]): 监视消息/事件. 请参阅 OnMessage() 了解详情.

StrGet(Address [, Length] [, Encoding = None ] ) [AHK_L 46+]: 从内存地址复制字符串, 并可以对其在不同代码页间进行转换. 请参阅 StrGet() 了解详情.

StrPut(String, Address [, Length] [, Encoding = None ] ) [AHK_L 46+]: 复制字符串到内存地址, 并可以对其在不同代码页间进行转换. 请参阅 StrPut() 了解详情.

RegisterCallback():创建机器码地址,当它被调用时会重定向到脚本中的函数。请参阅 RegisterCallback() 了解详情。

Trim() [AHK_L 31+]:移除字符串的开始和/或末尾的某些字符。请参阅 Trim() 了解详情。

VarSetCapacity(UnquotedVarName [, RequestedCapacity, FillByte]): 增加或清空变量占用的内存. 请参阅 VarSetCapacity() 了解详情.

通用数学函数

注意: 如果某个传入参数为非数值时, 那么数学函数通常返回空值 (空字符串).

Abs(Number): 返回 Number 的绝对值. 返回值的类型与 Number 相同 (整数或浮点数).

Ceil(Number):返回由 Number 向上取整到最近的整数(不带 .00 后缀)。例如, de>Ceil(1.2) de> 结果为 2 而 de>Ceil(-1.2) de> 结果为 -1。

Exp(N): 返回 e (其近似值为 2.71828182845905) 的 N 次幂. N 可以为负数, 也可以为小数. 要计算 e 以外的其他数的次幂, 请使用 ** 运算符.

Floor(Number): 返回由 Number 向下取整到最近的整数 (不带任何 .00 后缀). 例如, de>Floor(1.2) de> 的结果为 1 而 de>Floor(-1.2) de> 结果为 -2.

Log(Number): 返回 Number 的对数 (底数为 10). 结果格式化为 浮点数. 如果 Number 为负数, 则返回空字符串.

Ln(Number): 返回 Number 的自然对数 (底数为 e). 结果格式化为 浮点数. 如果 Number 为负数, 则返回空字符串.

Mod(Dividend, Divisor): 求模. 返回被除数 Dividend 除以除数 Divisor 后得到的余数. 结果的正负总是与被除数一致. 例如, de>mod(5, 3) de> 和 de>mod(5, -3) de> 的结果都为 2,但 de>mod(-5, 3) de> 和 de>mod(-5, -3) de> 的结果为 -2。如果其中一个参数为浮点数, 那么结果也是浮点数. 例如, de>mod(5.0, 3) de> 的结果为 2.0 而 de>mod(5, 3.5) de> 的结果为 1.5. 如果除数为零, 则函数返回空值 (空字符串).

Round(Number [, N]): 如果 N 省略或为 0, 则 Number 被取整到最近的整数. 如果 N 为正数, 则 Number 被取整到 N 个小数位. 如果 N 为负数,则 Number 被取整到十进制小数点左边 N 位。例如, de>Round(345, -1) de> 的结果为 350 而 de>Round (345, -2) de> 的结果为 300。与 Transform Round 不同, 每当 N 省略或小于 1 时结果不带 .000 后缀. 在 v1.0.44.01+, N 值大于零时会准确显示 N 个小数位而不遵循 SetFormat 的设置。要避免这种情况, 需要对 Round() 的返回值再进行一次数学运算; 例如: de>Round(3.333, 1) +0 de>.

Sqrt(Number): 返回 Number 的平方根. 结果格式化为 浮点数. 如果 Number 为负数, 则函数返回空字值 (空字符串).

三角函数

Sin(Number) | Cos(Number) | Tan(Number):分别返回 Number 的正弦、余弦或三角函数值。Number 必须用弧度表示.

ASin(Number): 返回弧度表示的反正弦值 (其正弦值为 Number). 如果 Number 小于 -1 或大于 1, 则函数返回空值 (空字符串).

ACos(Number): 返回弧度表示的反余弦值 (其余弦值为 Number). 如果 Number 小于 -1 或大于 1, 则函数返回空值 (空字符串).

ATan(Number):返回弧度表示的反正切值(其正切值为 Number)。

注意: 要将弧度转换成角度, 请将其乘以 180/pi (约为 57.29578). 要将角度转换成弧度, 请将其乘以 pi/180 (约为 0.01745329252). pi 的值 (约为 3.141592653589793) 为 1 的反正切值的 4 倍.

其他函数

Polyethene 的命令函数:为每个有 OutputVar 的 AutoHotkey 命令提供了可调用的函数。可以通过 #Include 把这个库包含在任何脚本中.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值