AutoHotKey:hotstring变量的?

问题描述:

如何在热点函数中调用全局变量。AutoHotKey:hotstring变量的?

这工作:

::hlw:: 
hlwvar = Hello World 
sendInput %hlwvar% 
return 

这不:

hlwvar = Hello World 
::hlw:: 
sendInput %hlwvar% 
return 
+0

我已经复制了你的底部代码(尽管我把它放到4行中)并且对我来说工作正常。不确定是什么问题...? – 2010-07-23 12:32:15

我从Aardvark的“Joel T. 33/M/Seattle,WA”得到了这个答案。我在这里发布它是因为它非常有用。

-

你的第二种形式实际上应该工作;尝试将这4行粘贴到一个新脚本中并运行它来查看。最有可能的问题是,在第二个示例中,“hlwvar = Hello World”实际上并未执行,因为它不在脚本的顶部。当AHK第一次运行脚本时,它从顶部开始执行,直到遇到“返回”或热键/热键定义。因此,您应该始终在脚本顶部定义全局变量和任何其他全局设置,并且一旦所有脚本“初始化”都完成了,就以“返回”结束。然后把所有你的热点/热键/功能放在那个点以下。

我喜欢做的一件事是把我所有的全局东西放入一个函数中,例如 的init() { 全球 someglobalvar = myvalue的 回报 } 然后在我的脚本的顶部,我有 的init() 回报

这使得它很容易一目了然查明我的init东西生活,以及如果需要,可以在其他地方移动init例程。请注意,如果您希望所有在该函数中分配的变量全局可用,则“全局”关键字必须是函数定义中的第一个命令。

+0

克里斯指出了什么,我的答案是什么。 :) – RaptorX 2010-08-03 11:28:42

+0

除了克里斯说:“不知道什么问题是......?” Joel说:“最有可能的问题是,在第二个例子中,”hlwvar = Hello World“实际上并未被执行,因为它不在脚本的顶部。”看到不同? – Eric 2010-08-05 04:00:35

+0

然后没有足够的信息提供您的问题。因为如果你把那个我刚刚给你的脚本简单地起作用。 如果我知道这是一个更大的脚本的一部分,那么我可以说这个位置确实影响克里斯和其他人提到的。如果它不在脚本的autoexecute部分,它根本就不会被识别。 – RaptorX 2011-04-01 18:06:18

正如克里斯提到的以下两个代码的工作完全一样对我来说:

 
::hlw:: 
hlwvar = Hello World 
sendInput %hlwvar% 
return 

 
hlwvar = Hello World 
::hlw:: 
sendInput %hlwvar% 
return