//timeGetTime只能保证1ms的精度
function timeGetTime()
return dllcall("winmm.dll", "DWORD", "timeGetTime")
end
function Delay(delayTime)
//纪录开始时间
var delayTimeBegin = timeGetTime()
//初始化结束时间
var delayTimeEnd = 0
while(delayTimeEnd - delayTimeBegin < delayTime)
//循环刷新(结束时间 - 开始时间) 直到与设置时间相等
delayTimeEnd = timeGetTime()
end
end
function SleepEx(dwMilliseconds, bAlertable)
//winapi 挂起当前线程函数
//如果bAlertable为 FALSE,则该函数在超时期限过去之前不会返回。如果发生 I/O 完成回调,则该函数不会返回,也不会执行 I/O 完成函数。如果 APC 排队等待线程,则该函数不会返回并且不会执行 APC 函数。
//如果bAlertable为 TRUE 并且调用此函数的线程与调用扩展 I/O 函数(ReadFileEx或 WriteFileEx)的线程相同,则该函数将在超时期限已过或 I/O 完成回调时返回功能发生。如果发生 I/O 完成回调,则调用 I/O 完成函数。如果 APC 已排队等待线程 ( QueueUserAPC ),则该函数将在超时期限已过或调用 APC 函数时返回。
return dllcall("kernel32.dll", "DWORD", "SleepEx", "DWORD", dwMilliseconds, "BOOL", bAlertable)
end