标题: VBS脚本中Sleep方法的最大延迟时间
作者: Demon
链接: https://demon.tw/programming/vbs-sleep-maximum-time.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
问题出自批处理之家一个标题为《VBS脚本的Sleep函数的最大延迟时间是多少?》的帖子:
描述问题:我现在想利用VBS里面的sleep函数来作为一个定时器,时长应该是小时级别的,可能需要3个小时的定时,也就是需要延时3个小时,然后再处理后续的指令。
求助版上的各位高手,谢谢!!!!!
VBS 中 WScript 对象的 Sleep 方法在内部应该调用的是 Sleep Windows API 函数,根据 MSDN 文档,Sleep 函数的声明如下:
VOID WINAPI Sleep( __in DWORD dwMilliseconds );
Sleep 函数只有一个参数 dwMilliseconds,表示线程挂起的毫秒数,参数类型为 DWORD。MSDN 文档对 DWORD 类型是这么描述的:
A DWORD is a 32-bit unsigned integer (range: 0 through 4294967295 decimal). Because a DWORD is unsigned, its first bit (Most Significant Bit (MSB)) is not reserved for signing.
This type is declared as follows:
typedef unsigned long DWORD, *PDWORD, *LPDWORD;
DWORD 是32位无符号整数,范围是0到4294967295(2的32次方减一),所以理论上 Sleep 函数的最大延迟时间是 DWORD 能够表示的最大值4294967295毫秒。
4294967295毫秒是个什么概念呢?写个简单的 VBS 脚本换算一下:
MsgBox (2 ^ 32 - 1) / (1000 * 60 * 60 * 24)
结果是49.7102696180556天,虽然不知道实际上是否能延迟那么长的时间,但是延迟3个小时还是没有问题的。
赞赏微信赞赏支付宝赞赏
随机文章:
win下编程,很不错。