用户友好的方式来结束VBScript中的循环

时间:2017-07-13 16:37:06

标签: vbscript

我还在制作这个VBScript脚本,为我玩的视频游戏输入内容。我之所以仍在努力,是因为我无法找到一种用户友好的方式来阻止最底部的循环( Ctrl + F 并输入Do While)。除了这个愚蠢的循环外,每一件事都有效。

我尝试制作仅pause的批处理脚本,并检查cmd.exe的流程,但由于某种原因这种情况并不奏效。如果你能弄清楚,我更喜欢那样做结束循环。但是,我并不十分关心你这样做的方式,只要它有点用户友好(在任务管理器中手动结束wscript.exe进程显然不是用户友好的)。

Set objC = WScript.CreateObject ("WScript.Shell")

Sub sleep(Timesec)
  objC.Run "Timeout /T " & Timesec & " /nobreak", 0, True
End Sub

sleep(1)
objA = False
objH = False

objF = MsgBox("The Sell All Script that is a meme. By Vncz. Start?", 68, "Hello!")

Function chatsMessageBox()
  Do
    MsgBox "No."
  Loop
End Function

If objF = vbYes Then
  objB = InputBox("What is the username for your alt to pay? ALL LOWERCASE PLEASE, and '+(-)' for underscores.", "Username to pay")
Else
End If

If objB = "" Then
  objH = True
Else
  xdddddddddddddd = MsgBox("Press OK to check the username.", 64, "Check Username")
End If

If objF = vbNo Then
  objH = True
  MsgBox "Canceled."
Else
End If

If objH = True Then
  objA = False
ElseIf objB = "chatshitgetsplit" Then
  objD = MsgBox("No.", "16", "No.")
Else
  objE = MsgBox("Press OK to start the loop; run stop.bat to stop the loop.", 64, "You're in!")
End If

If objD = vbOK Then
  chatsMessageBox()
Else
End If

If objE = vbOK Then
  objA = True
Else
End If

'[]
'In place of this comment, stop the loop somehow (If something, objA = False)
'[]

Do While objA = True
  sleep(5)
  objC.SendKeys "t"
  sleep(1)
  objC.SendKeys "/sell all"
  sleep(1)
  objC.SendKeys "~"
  sleep(5)
  objC.SendKeys "t"
  sleep(1)
  objC.SendKeys "/pay " & objB & " 10000"
  sleep(1)
  objC.SendKeys "~" 
Loop

2 个答案:

答案 0 :(得分:1)

在Do While循环中,放置如下代码:

If <your condition> Then Exit Do

答案 1 :(得分:1)

最佳解决方案是在满足特定条件后默认编辑该循环以结束。快速浏览一下,无论如何,我都看不到该循环的退出。它只会继续睡觉和发送密钥。这真的是你想要的吗?

1)您是否应该只迭代该循环一次?如果是这种情况,没有理由循环。

2)如果您知道要迭代这些步骤的次数,则可以使用计数器。例如:

Dim i as Integer
i = 0

Do Until i = 5
    'rest of code'

    i = i + 1
Loop

这将允许您循环设定的次数。

让它在objA = True时循环,并且在循环期间从不查看objA或调用另一个函数/ sub,它将不会变为chnage。

3)如果你只是想在完成某件事后退出你的循环而你知道那是什么,你也可以在循环中做一个if语句。

Do While objA = True
    'rest of code'
    If <condition> = True Then Exit Do
Loop