Deep BlueVBScriptWMIPHPC语言JavaScriptWindows API路由器Windows函数Python | VBS实现“多线程”今天有人发邮件问我一个问题:
乍一看这是不可能实现的,因为InputBox函数本身没有超时关闭的参数,而且程序会一直等待InputBox返回才继续运行,后面的语句不可能在InputBox返回之前执行。 如果VBS能实现高级语言的多线程的话……只可惜VBS不可能实现多线程,但是可以用setTimeout方法模拟“多线程”。 Dim IE Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "about:blank" Set window = IE.Document.parentWindow id = window.setTimeout(GetRef("on_timeout"),3000,"VBScript") name = InputBox("Please enter your name","InputBox Timeout") window.clearTimeout id If name <> "" Then MsgBox "Hello," & name IE.Quit 'By Demon 'http://demon.tw Sub on_timeout() Dim WshShell set WshShell = CreateObject("wscript.Shell") WshShell.SendKeys "{ESC}" End Sub 用setTimeout方法设定3秒超时,3秒后用SendKeys方法发送ESC键结束InputBox。当然,用SendKeys是很不靠谱的,我一般很少用SendKeys方法,因为它做了太多的假设,万一InputBox不是激活窗口呢?这里只是为了程序简单而用了SendKeys,可以换成结束脚本本身。 同理,想在VBS中实现VB中的Timer事件的话可以用setInterval方法,我就不写例子了,自己看文档。 参考链接:setTimeout Method (window, Window Constructor)
|