autohotkey将文本表达式分配给变量

时间:2013-07-06 01:01:35

标签: string variables autohotkey

在autohotkey脚本中,我试图将文本字符串分配给变量。任何人都可以发现为什么这不起作用,它看起来就像一些提供的例子?我不再需要变量,但现在我只是好奇我做错了什么......

myvar:=%“foo”;创建全局变量myvar,但没有内容

我知道你可以说myvar = foo 但是将引号从固定的文本字符串中删除只会让我感到畏缩。我甚至让它工作,但没有'保存我的文件,然后做'一些无害的化妆品编辑。'我点击“H”任务 时钟附近的图标,使用菜单文件/显示变量来验证空内容......

1 个答案:

答案 0 :(得分:3)

好的,我们为变量赋值:

eval_this:= "harry"

如果你这样做,你只需阅读变量的内容:

msgbox %eval_this%   ;=harry

当然,在这里,文本没有被评估 - “eval_this”只是文字给ahk:

msgbox eval_this     ;= eval_this

这种方法被称为“强制表达” - 这是你想要做的。它尝试读取文本字符串,就好像它是代码一样。它不是在读取任何变量的内容,它正在查看文本并强制它成为一个变量(它有点相同,但不是真的)

msgbox % eval_this   ;= harry

这也让我们很烦,你可以看到我们如何阅读变量:

test := eval_this    
msgbox %test%        ;=harry

同样的事情,不同的方法(强制文本成为变量):

test = % eval_this
msgbox %test%        ;=harry

考虑这一点,我们将两个文本字符串强制为实际值

eval_this := "harry"
this_too := " and bob"

test = % eval_this this_too
msgbox %test%               ;= harry and bob

好的,既然你已经拥有了这一切,那么这是一个实际应用。我们将强制文本字符串的值为变量。由于我们实际上已经定义了什么是“警报”,因此gosub将调用该定义。将其弹出到脚本中并运行它:

eval_this := "alert"

gosub % eval_this
exit  ;we are finished with the demo, so end here

alert:
    msgbox harry
return