2017-05-23 23 views
0

我需要一些幫助。我是VBS的新手,我想寫一個玩電子遊戲的機器人來打字。如何在使用VBS的消息框上按「OK」時停止循環?

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鍵。代替評論,我應該寫什麼代碼,如果我甚至做對了?謝謝!

回答

0

Unfortuately,MSGBOX凍結執行。

換句話說,您不能在消息apear和點擊Ok或Cancel時刻之間循環。

實現這一目標的唯一途徑就是讓一個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」

+0

這個工作,感謝,人!我認爲5天后檢查是沒有希望的,但我今天回來了。謝謝;) – Vncz

+0

太棒了!很高興看到問題解決 – Tommy

0

我不知道你使用了哪個循環關鍵字。使用以下任何關鍵字後

如果x = vbOK然後 「退出對於/退出DO /退出功能」可以幫助你