【发布时间】:2019-02-05 03:56:24
【问题描述】:
我正在为在不支持WScript 的工业控制器上运行的应用程序编写 VBScript。控制器有一个用于处理 VBScript 的线程,我需要暂停我的脚本只进行几次程序扫描,以允许另一个事件处理程序进行处理。 VBScript 在 WSH 外壳中处理。如果我运行MsgBox 并弹出一条消息,它会释放脚本以执行所需的操作,并且一切正常,但我无法弹出消息框。
我读过的所有内容都建议使用WScript.Sleep,但我无法使用。
这不在网络浏览器中运行,因此 window.timeout 对象不可用。 我无法访问 WScript.Sleep,所以这不是一个选项。
【问题讨论】:
-
你能不能把你的代码替换成由计时器(setInterval)触发的代码,我认为它包含一个永无止境的循环?
-
这不是一个永无止境的循环。我有一个在控制器之间移动文件的 activex 对象。我调用它的一种方法来移动文件。它返回 true 或 false 表示它已完成。同时它制定了一个字符串消息,它通过事件处理程序发回。一旦我运行这个方法,下一行代码需要等到这个字符串被填充,但是如果我使用一个循环来监视那个字符串的长度,它会阻止事件处理程序的处理。我发现如果我弹出一个消息框,它将允许它运行,这样当我关闭该框时,我的代码就会正确执行。
-
执行脚本的环境是什么?浏览器、Windows 脚本主机或其他东西?如有其他,请为软件命名。
-
如果你检查运行你的脚本的环境的API,你可能会发现它提供了一些相当于sleep()或doEvents()的函数
-
软件为 Indusoft,应用程序在 Windows 7 Embedded pro 上运行。该软件在 WSH 外壳中运行 vbscript,但它们不提供对 WScript 的访问。
标签: vbscript