VBS脚本中Sleep方法的最大延迟时间

标签: , , , ,

问题出自批处理之家一个标题为《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个小时还是没有问题的。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. JavaScript 中小数和大整数的精度丢失
  2. 实现简单的VBS加密
  3. VB6拾遗:更高效的数组
  4. Python中的长整型(Long)乘法C源码分析
  5. Workbooks.Open中的相对路径

一条评论 发表在“VBS脚本中Sleep方法的最大延迟时间”上

  1. towry说道:

    win下编程,很不错。

留下回复