我不熟悉自动处理,我想知道如何处理某些事情。代码就是这一行:
$input = InputBox("game : +/-", "Write a number:")
如果我在本节中输入数字,程序将正常运行。
如果我单击“取消”按钮,则会引发错误,因此我将其处理为:
If (@error = 1) Then
$End = True
我做得还好吗?
然后:
非常感谢!抱歉,如果我的问题很简单或没用,我会帮我很多忙
答案 0 :(得分:0)
当您调用InputBox
函数值时,它们将指示处理结果,这些值为:
成功:输入的字符串。
失败:“”(空字符串),并将@error标志设置为非零。
@错误:1 =按下了取消按钮。 2 =超时时间为 到达。 3 =输入框无法打开。这通常是由 错误的论点。 4 = InputBox无法显示在任何监视器上。 5 =无效的参数宽度(不含高度)或左侧(不含顶部)。
因此从本质上讲,这意味着如果它返回非空字符串(“成功”的情况),则不必担心@error
。如果返回任何非零值,则@error
的值将指示发生了什么。因此,如果发生错误而只想返回,则应使用以下if语句:
If (@error <> 0) Then
$End = True
之所以起作用,是因为我们知道是否@error == 0
表示输入框已成功并且已返回值,否则我们就知道它引发了上面列出的错误之一。我希望关闭窗口与按“取消”具有相同的效果,即@error == 1
,但我尚未检查。
此外,如果您愿意,可以打开@error
的值,并使用该值向用户显示“请输入值”或“命令超时”的错误消息,但是似乎超出了本例的要求。
以下是相关文档:https://www.autoitscript.com/autoit3/docs/functions/InputBox.htm
祝你好运!
答案 1 :(得分:0)
通过几个三元操作,您可以看到取消按钮设置了错误标志,并且它确实为= 1或== 1或= True(因为True的值为1)
$input = InputBox("game : +/-", "Write a number:")
$result = (@error == 1) ? 'cancel was pressed' : $input
msgbox(0, '' , $result = '' ? 'empty string' : $input)