VBScript InputBox - 如何识别按下"取消"按钮的时间?

Ava*_*zer 2 vbscript

按下取消按钮后,如何让我的VBScript取消进程?当按"确定"时,我希望VBScript打开一个新的InputBox.我已经得到了这个有点工作,但我也想给一个功能"取消"按钮.一个函数,可以阻止整个VBScript打开任何其他MsgBoxInputBox.

我尝试过这样的事情:

Set shell = createobject("wscript.shell")
strtext = InputBox("text")
    vbCancel
If vbCancel then 
  WScript.Quit
End if
Run Code Online (Sandbox Code Playgroud)

Kul*_*gin 5

来自MSDN:

提供帮助文件和上下文时,会自动将"帮助"按钮添加到对话框中.

如果用户单击"确定"或按ENTER键,则InputBox函数将返回文本框中的任何内容.如果用户单击"取消",则该函数返回零长度字符串("").

上面的大胆部分并不完全正确.
用户可以通过多种方式取消InputBox对话框; 通过关闭对话框,单击Cancel或按ESC,ALT+ F4等等.在所有情况下,除了按下或单击OKInputBox返回Empty(未初始化的变体,其值为0表示数字,零长度字符串("")为字符串隐式),这意味着对话框被解除.

由于在零长度字符串("")和Empty变量之间存在隐式转换,因此寻找零长度字符串相等性,因为MSDN建议并不总是合适的解决方案(例如,在零长度字符串意味着"使用默认值"的逻辑中,没有取消).

Dim retval
    retval = InputBox("txt")
If IsEmpty(retval) Then
    'cancelled
    MsgBox "operation has been cancelled"
Else
    'something has entered even zero-length
    MsgBox retVal
End If
Run Code Online (Sandbox Code Playgroud)