常用的时间命令有: Time, TickCount, DateTime.Format 获取当前时间
命令名称Time 命令功能得到当前系统时间 命令参数无返回值返回值为数值类型,表示当前系统从1970年1月1日至今所经过的秒数 需要注意的是, 这个命令并不是直接返回出当前系统所直观显示的时间, 而是系统从1970年1月1日至今所经过的秒数, 所以得出的值是不能直接用的, 需要使用DateTime插件来转换成所需要的时间格式范例:Dim t = time()
TracePrint "当前分钟数为: " & DateTime.Minute(t)
TracePrint "当前年份是: " & DateTime.year(t)
TracePrint "当前月份是: " & DateTime.month(t)
复制代码DateTime.Minute\DateTime.year\DateTime.month 这些命令是用来把从time()命令里返回的时间转换成指定的时间的命令, 相关的命令还有用来转换成小时\秒数\星期等等, 具体的命令这里就不过多的一一介绍了, 大家可以直接参考下按键的命令帮助文档, 里面有详细的范例按照指定格式获取时间
这里再单独介绍一个自定义比较强的时间函数, 这个命令可以按照你要求的格式来返回一个时间给你命令名称DateTime.Format 命令功能按照指定格式输出时间 命令参数fmt:分别用%Y, %m, %d, %H, %M, %S代表年,月,日,时,分,秒如果不填格式,默认格式为%Y-%m-%d %H:%M:%St:为可选参数,可以填写Time()得到的时间。如果不填,则取当前时间返回值返回根据指定的格式生成的时间这个命令可以指定时间按照第一个参数设定的格式来生成你想要的时间, 范例:// 生成时间: 年-月-日
Traceprint DateTime.Format("%Y-%m-%d")
// 生成时间: 年/月/日
Traceprint DateTime.Format("%Y/%m/%d")
// 生成时间: 年/月/日 时:分:秒
Traceprint DateTime.Format("%Y/%m/%d %H:%M:%S")
// 生成时间: xxxx年xx月xx日
TracePrint DateTime.Format("%Y年%m月%d日")
复制代码这个命令就是把%Y %m之类的特殊符号当成是指定的年月等时间, 然后其他的就按照原来的字符不变进行返回计算时间差的方法
上面介绍了如何获取系统时间, 那在具体的使用中还需要涉及到定时进行任务, 或者定时循环找图, 超时后退出这样的功能, 这种功能就需要通过TickCount 命令来配合使用了命令名称TickCount 命令功能获取当前脚本运行时间,单位毫秒 命令参数无返回值返回值为数值类型,脚本运行的时间 使用TickCount 命令来计算时间差Dim t = TickCount()
For 100
If CmpColorEx("300|500|FFFFFF|123456-102030,305|505|FFFFFF",0.9) = 1 Then
End If
Next
TracePrint "使用多点找色100次, 消耗时间是: " & TickCount()-t
复制代码利用TickCount 可以精确毫秒的特性, 我们可以用来检测代码运行的时长实现定时功能Dim t = TickCount()
Do
If TickCount() - t > 5000 Then
TracePrint "循环时间超过5秒,退出循环"
Exit Do
Else
TracePrint "循环中..."
End If
Loop
复制代码根据上面的方法, 我们可以进一步应用到找色中, 来实现一个在指定时间内循环等色的操作Call 循环多点比色("300|500|FFFFFF|123456-102030,305|505|FFFFFF",5)
Function 循环多点比色(mycolor, t)
Dim t1 = TickCount()
Do
If CmpColorEx(mycolor, 0.9) = 1 Then
TracePrint "找到特征啦"
Exit Do
End If
If TickCount() - t1 > t*1000 Then
TracePrint "等待5秒未找到, 退出循环"
Exit Do
End If
Delay 200
Loop
End Function
复制代码