2017-06-03 185 views
0

我試圖讓它運行,因此我的代碼運行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

回答

0

看看下面的例子:

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