我最近写了很多随机脚本,虽然它们都没有什么用处,但是它们可以帮助我理解各种事情,我经常用它们作为参考...无论如何,我的一个脚本的大纲按钮选项是弹出消息框生成器,它会生成一个我可以复制和粘贴的代码(脚本中有很多消息框),
但是我在输入“$codebox”中显示变量时遇到了麻烦:
$code = "MsgBox(0, $title, $message)"
GUICtrlSetData($codebox, $code)
显示如下内容:
"MsgBox(0, $title, $message)"
而不是存储在变量里面的数据。
我可以像这样在变量中包含一个变量吗?我不太清楚还有什么其他方法可以做到这一点。有人能给我提供一个可行的解决方法吗?我找了好多地方,但一无所获。
ps:更新后的脚本可以在这里找到这里
答案1
可能的解决方案:$code = MsgBox (0,$title,$message)
但这将触发并在该点显示 MessageBox(而不是在 GUICtrlSetData 处)。
当您单击 MsgBox 上的“ok”时,它会根据此链接返回您的操作的值: http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm
因此,$code 返回 1 - 这表明您单击了“确定”。
编辑:(现在我明白了 ICE 想要得到什么)使用此代码:
$code = 'MsgBox(0, ' & '"' & $title & '"' & ', ' & '"' & $message & '"' & ')'
好吧,在你(和其他人)用 WTF 和所有“和'”的用法攻击我之前,让我解释一下:
当你打印$code时,它将生成:
MsgBox(0, "test", "messages and messages and messages")
正如 ICE 所希望的那样,这些代码是可以复制并直接用于 ICE 代码的。因此,为什么需要使用单引号 (') 来锁定文本,并使用双引号 (") 作为普通文本 - 以生成上述代码。
如果我没有将单引号和双引号组合起来,它将生成(我测试后发现的):
MsgBox(0, test, messages and messages and messages)
上面的代码在简单复制粘贴到 AutoIt 后将不起作用。您需要添加引号(双引号或单引号)。
AutoIT 可以使用单引号或双引号作为文本标记,因此请坚持使用您熟悉的引号。当您需要将双引号转义为文本时,请使用单引号作为文本标记,反之亦然。
希望这可以帮助。