1、vbs脚本本身是不支持多线程的,即使用hta中的settimeout也是一样。
但是利用wscript.shell.run,可以曲线实现这一点:
在不用阻塞方式时,wscript.shell.run可以同时启动若干程序。
通过vbs自生复制成临时脚本,利用run反复加载,可以实现多进程运行。
通过wscript,arguments,能够简单传达参数。
2、"多线程"的控制
控制同时运行的脚本数量,在例如多线程下载时有特殊意义。
然而,wscript.shell.run不返回运行结果(否者只能逐一运行),vbs很难有效限制脚本的数目。
通过两种方法可以实现子脚本状态的监视:
a、通过文件隧道,通过regedit,此方法稍微复杂,需要多写几行代码处理管道,但传递信息多。由于vbs的低级,尚不清楚并发操作管道文件可能带来的问题。
b、通过wmi的Win32_Process监视,可了解运行状态
3、已成功利用microsoft.xmlhttp,adodb.stream,wscript.shell完成了一个多“线程”多任务下载的脚本程序,证实上面方法的可行性。缺陷是任务管理器出现若干wscript,非常不爽。
若使用hta,结合socket控件,使用脚本完成bitcomet一类任务视乎也不无可能,当然效率就很差了。
4、ps,有人提到vbs无法支持xmlhttp异步,其实并非如此,通过getref,可以实现异步,这在hta中意义较大,但是参数传递麻烦。