终止正在运行的VBScript中间进程



我有一个VBScript,它将在同一选项卡中逐个打开多个URL,用于数据迁移。我遇到的问题是,如果我的电脑或连接速度减慢,我的VBScript将继续运行。最大的问题是Ctrl-L和WshShell。发送密钥:

WshShell.SendKeys "^l"
WScript.Sleep 1000
WshShell.SendKeys "https://www.google.com/"
WshShell.SendKeys "{ENTER}"

命令执行。如果我关闭浏览器,它将继续键入这些内容。如何在执行过程中停止VBScript?如果关闭浏览器,是否有方法使其停止?

SendKeys方法是尝试自动化没有任何编程访问权限的旧程序的最后一搏。根据其文件,

使用SendKeys方法向没有自动化接口的应用程序发送击键。

如果您试图自动化web浏览器(在某种自动化测试中可能会这样做),您应该使用专为自动化web浏览器而设计的库。例如,Internet Explorer有一个实质性的COM Automation接口(请参阅它的文档,尽管我在MSDN上看到的使用VBScript的示例没有以前那么多,因为我怀疑他们希望人们转移到.NET和PowerShell来做这类事情)。为您正在自动化的浏览器使用实际的对象库应该允许您直接控制它并处理事件,例如您希望在浏览器窗口关闭时做一些事情。

如果您只是试图在网页上加载数据,而不是依赖于web浏览器,则可以使用WinHttpRequest对象加载数据。

如果您确实需要使用SendKeys来自动执行某些操作,或者希望找到在特定时间停止脚本的方法,那么最好的方法是在脚本继续运行之前检查它是否应该继续运行。例如,在Sleep调用之后,它应该检查它正在自动化的任何东西是否处于预期的状态。在不加载支持更全面接口的COM对象的情况下,仅使用VBScript无法检查太多内容,但您可以使用运行WScript.AppActivate并检查其返回值来查看您要查找的窗口是否仍然存在。如果您的脚本确定它应该终止,它可以调用WScript.Quit方法来终止

最新更新