【问题标题】:Terminate Running VBScript Mid-Process终止运行 VBScript 中间进程
【发布时间】:2017-11-04 02:55:32
【问题描述】:

我有一个 VBScript,它将在同一个选项卡中一一打开多个 URL 以进行数据迁移。我遇到的问题是,如果我的 PC 或连接速度变慢,我的 VBScript 将继续运行。最大的问题是 Ctrl-L 和 WshShell.SendKeys:

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

正在执行的命令。如果我关闭浏览器,它将继续输入这些。如何停止 VBScript 中间执行,如果我关闭浏览器,有没有办法让它停止?

【问题讨论】:

  • 这与通过批处理文件发送用户名和密码有什么关系? Vbscript 不是批处理文件。
  • 该死,上一个问题的标题继续。真的很抱歉。
  • If I close the browser, it will continue to type these - 你为什么不在输入之前检查浏览器的存在和状态?
  • 我现在就去找。对于愚蠢的问题,我很抱歉,这是我第一次制作 VBScript。谢谢。
  • SendKeys 充其量是不可靠的,因此除非没有其他选择,否则不应将其用于任何事情。无论您在做什么数据迁移,使用XMLHTTP request 或至少Internet Explorer COM object 可能要好得多。

标签: vbscript command terminate


【解决方案1】:

SendKeys 方法是尝试自动化没有任何程序访问权限的旧程序的最后努力。每its documentation

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

如果您尝试自动化 Web 浏览器(就像在某种自动化测试中所做的那样),您应该使用专为自动化 Web 浏览器而设计的库。例如,Internet Explorer 有一个强大的 COM 自动化接口(请参阅 its documentation,尽管我在 MSDN 上没有看到像以前那样使用 VBScript 的示例,因为我怀疑他们希望人们为此迁移到 .NET 和 PowerShell那类的东西)。为您正在自动化的浏览器使用一个实际的对象库应该允许您直接控制它并处理事件,例如您希望在关闭浏览器窗口时执行某些操作。

如果您只是想在网页上加载数据,而不是依赖网络浏览器,您可以使用WinHttpRequest object 加载数据。

如果您确实需要使用SendKeys 来自动执行某些操作,或者想找到一种方法在某些时候停止您的脚本,最好的方法是让您的脚本检查它是否应该继续运行在它继续之前。例如,在你的Sleep 调用之后,它应该检查它正在自动化的任何东西是否处于它所期望的状态。在不加载支持更全面接口的 COM 对象的情况下,仅使用 VBScript 无法进行很多检查,但您可以通过运行 WScript.AppActivate 并检查其返回值来查看您是否正在寻找一个窗口还在那里。如果您的脚本确定它应该终止,它可以调用WScript.Quit 方法来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多