按" OK"如何停止循环在VBS的消息框上?

时间:2017-05-23 23:51:22

标签: vbscript

我需要一些帮助。我是VBS的新手,我想为我玩的视频游戏写一个机器人。

set sellAllTyping = wscript.CreateObject("WScript.Shell")

x= MsgBox ("To stop the bot, click OK. /// Coded by Vncz with a little help from StackOverflow! :^) RIP Yams ;-;",vbOK+vbInformation,"sell all Bot")

if x=vbOK then 
' *** I don't know what to write here. ***

sellAllTyping.sendkeys "t"
wscript.sleep 1000
sellAllTyping.sendkeys "/sell all"
wscript.sleep 1000
sellAllTyping.sendkeys "{ENTER}"
wscript.sleep 5000
loop

如果我在传唤的消息框上按OK,我想在最底部停止循环。代替评论,我应该写什么代码,如果我甚至做得对吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我不知道您使用了哪个循环关键字。

之后使用以下任何一个关键字

如果x = vbOK则 "退出/退出退出/退出功能"可能会帮助你

答案 1 :(得分:0)

不幸的是,msgbox冻结了执行。

换句话说,你不能在消息apear和你点击确定或取消的那一刻之间循环。

实现这一目标的唯一方法是制作一个这样的HTA文件:

<SCRIPT LANGUAGE="VBScript" src="test.vbs"> </SCRIPT>
<input type='button' value='Start' onclick='startLoop()'>
<input type='button' value='Stop' onclick='stopLoop()'>

然后,在链接的vbs文件上(对于这个例子,它是test.vbs),你必须写这样的东西:

set sellAllTyping = CreateObject("Wscript.shell")
loopState = true

sub startLoop()
    do while loopState = true
        msgbox "yeah"
    loop
end sub

sub stopLoop()
    loopState = false
end sub

现在唯一的问题是应用程序因为循环而冻结(如果我用sendkeys替换msgbox)或者总是隐藏在msgbox后面。

此代码运行良好(具有睡眠功能):

set sellAllTyping = CreateObject("Wscript.shell")
loopState = true

sub startLoop()
    do while loopState = true
        msgbox "yeah"
        sleep(2)
    loop
end sub

sub stopLoop()
    loopState = false
end sub

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

确保将hta文件命名为“something.hta”而不是“something.html”