如何在VBScript上同时运行两个循环

问题描述:

我试图让它运行,因此我的代码运行2一次执行循环,因此它可以在同一时间运行开放式磁盘驱动器代码和垃圾邮件大小写锁定代码。任何方式我可以做到这一点?如何在VBScript上同时运行两个循环

Set oWMP = CreateObject("WMPlayer.OCX.7") 
Set colCDROMs = oWMP.cdromCollection 
x=msgbox("Keyboard error with key CAPS LOCK",0,"Critical Error") 
x=msgbox("Error with CD Drive",0,"Critical Error") 
Set wshShell =wscript.CreateObject("WScript.Shell") 
message= "Critical Disk Drive Error Alert Call Microsoft Support at 0 3 4 4 8 0 0 2 4 0 0 to resolve the issue" 
message1= "Caps Lock key Error" 
Dim message, sapi 
Set sapi=CreateObject("sapi.spvoice") 
sapi.Speak message 
sapi.Speak message1 



do 
if colCDROMs.Count >= 1 then 
For i = 0 to colCDROMs.Count -1 
colCDROMs.Item(i).Eject 
Next 
For i = 0 to colCDROMs.Count -1 
colCDROMs.Item(i).Eject 
Next 
End If 
wscript.sleep 100 
wshshell.sendkeys "{CAPSLOCK}" 
wscript.sleep 100 
loop 
+0

但你并不需要一个循环打开磁盘驱动器 – Slai

+0

为什么不只是做一个单循环内的两次行动......? – Dave

+0

每个循环都应该在单独的进程中运行,以使它们同时进行:初始脚本可以通过某些参数启动自身,并显示要调用的代码部分。虽然一个循环就足以完成这项任务。 – omegastripes

看看下面的例子:

CheckTask ' always at the begining of the script 

LaunchTask "EjectCdRoms" ' friendly keep CD-ROMs opened 
LaunchTask "MsgA" ' friendly show the message A 
LaunchTask "MsgB" ' friendly show the message B 
LaunchTask "Speak" ' friendly speak 

' procedures to be launched asynchronously 

Sub EjectCdRoms() 
    Dim i 
    On Error Resume Next 
    Do 
     With CreateObject("WMPlayer.OCX.7").cdromCollection 
      For i = 0 To .Count - 1 
       .Item(d).Eject 
      Next 
     End With 
     WScript.Sleep 500 
    Loop 
End Sub 

Sub MsgA() 
    Do 
     WScript.Sleep 3000 
     MsgBox "Critical Disk Drive Error Alert Call Microsoft Support at 03448002400 to resolve the issue", 48, "Blah" 
    Loop 
End Sub 

Sub MsgB() 
    Do 
     WScript.Sleep 5000 
     MsgBox "Caps Lock key Error", 48, "Blah" 
    Loop 
End Sub 

Sub Speak() 
    Do 
     With CreateObject("SAPI.SpVoice") 
      WScript.Sleep 4000 
      .Speak "Critical Disk Drive Error Alert Call Microsoft Support at 0 3 4 4 8 0 0 2 4 0 0 to resolve the issue" 
      WScript.Sleep 4000 
      .Speak "Caps Lock key Error" 
     End With 
    Loop 
End Sub 

' utility procedures, do not modify 

Sub CheckTask() 
    If WScript.Arguments.Named.Exists("task") Then 
     On Error Resume Next 
     Execute WScript.Arguments.Named.Item("task") 
     WScript.Quit 
    End If 
End Sub 

Sub LaunchTask(sTaskName) 
    CreateObject("WScript.Shell").Exec """" & WScript.FullName & """ """ & WScript.ScriptFullName & """ ""/task:" & sTaskName & """" 
End Sub