Vbscript 如何通过inputbox中的“取消”按钮中断循环

Vbscript 如何通过inputbox中的“取消”按钮中断循环,vbscript,Vbscript,下面的VB脚本通过测试功能检查有效的IP 如果我们从测试函数中得到OK,那么 我们从循环ValidIP=OK中断 如果输入框中没有,则询问问题,直到ValidIP=OK 但有时我想通过取消按钮退出循环 如何通过取消按钮中断循环(以便将ValidIP设置为OK) 在测试之前,输入下面的代码。。。行(从vbscript如何工作的旧内存中写入的代码): 当用户单击Cancel时,InputBox返回一个长度为0的字符串。在测试前输入类似下面的代码。。。行(从vbscript如何工作的旧内存中写入的代码

下面的VB脚本通过测试功能检查有效的IP

如果我们从测试函数中得到OK,那么 我们从循环ValidIP=OK中断 如果输入框中没有,则询问问题,直到ValidIP=OK

但有时我想通过取消按钮退出循环

如何通过取消按钮中断循环(以便将ValidIP设置为OK)


在测试之前,输入下面的代码。。。行(从vbscript如何工作的旧内存中写入的代码):


当用户单击
Cancel
时,
InputBox
返回一个长度为0的字符串。

在测试前输入类似下面的代码。。。行(从vbscript如何工作的旧内存中写入的代码):


当用户单击
Cancel
时,
InputBox
返回一个长度为0的字符串。

我不知道VB脚本,但我将按如下方式解决此问题

IP by Test函数将在单独的线程中运行,GUI运行的线程必须能够与其他线程通信并设置变量

为了可读性,我将引入一个新变量,比如AbortedByUser,这个变量可以由您的其他线程设置(事件处理程序或类似的不公开的东西…)

然后,您的代码将如下所示:

Do Until ValidIP=OK AND !AbortedByUser
   IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
   Test IPrange, strPattern
Loop
请注意,当函数启动时,AbortedByUser必须设置为false


因为我不知道VB脚本,所以我现在不知道如何正确地编写它

我不知道VB脚本,但我将按如下方式解决此问题

IP by Test函数将在单独的线程中运行,GUI运行的线程必须能够与其他线程通信并设置变量

为了可读性,我将引入一个新变量,比如AbortedByUser,这个变量可以由您的其他线程设置(事件处理程序或类似的不公开的东西…)

然后,您的代码将如下所示:

Do Until ValidIP=OK AND !AbortedByUser
   IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
   Test IPrange, strPattern
Loop
请注意,当函数启动时,AbortedByUser必须设置为false

因为我不知道VB脚本,所以我现在不知道如何正确地编写它

得到了答案。虽然它可以通过谷歌搜索,但它在一个不太常见的网站上。因此,我将答案张贴在这里,以便其他人可以使用

对于这个特定的问题,目前被接受的答案可以很好地解决


常见方法有一个问题,类似于
如果IPrange=“”,那么…

如果按
确定
使输入框保持空,或按
取消
,或单击关闭按钮,上述代码将以相同方式处理所有3个输入框

但是,本规范考虑了这种情况:

IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
If TypeName(IPrange) = "Empty" Then
    MsgBox "User has cancelled"
    Exit Do
End If
我得到了答案。虽然它可以通过谷歌搜索,但它在一个不太常见的网站上。因此,我将答案张贴在这里,以便其他人可以使用

对于这个特定的问题,目前被接受的答案可以很好地解决


常见方法有一个问题,类似于
如果IPrange=“”,那么…

如果按
确定
使输入框保持空,或按
取消
,或单击关闭按钮,上述代码将以相同方式处理所有3个输入框

但是,本规范考虑了这种情况:

IPrange=InputBox("Enter IP address range",,"172.17.202.1-10,192.9.200.1-100")
If TypeName(IPrange) = "Empty" Then
    MsgBox "User has cancelled"
    Exit Do
End If

THX,如果我想退出程序(而不是退出循环)@yael:
WScript.Quit[number]
[number]
更改为脚本应该返回的值。如果他们将提示留空并按OK,这也会退出。是否有办法检测用户是否返回空字符串
或单击
取消
?@anishsane使用自定义对话框而不是输入框。复制inputbox的功能不需要很多分钟。THX如果我想退出程序(而不是退出循环)@yael:
WScript.Quit[number]
change
[number]
返回脚本应返回的值。如果他们将提示留空并按OK,也会退出。是否有方法检测用户是否返回空字符串
“”
或单击
取消
?@anishsane使用自定义对话框而不是输入框。复制inputbox的功能不需要很多分钟。THX第一个答案对我来说没问题,它解决了我的问题Yeel THX第一个答案对我来说没问题,它解决了我的问题Yeel