AutoHotKey:hotstring变量的?
如何在热点函数中调用全局变量。AutoHotKey:hotstring变量的?
这工作:
::hlw::
hlwvar = Hello World
sendInput %hlwvar%
return
这不:
hlwvar = Hello World
::hlw::
sendInput %hlwvar%
return
我从Aardvark的“Joel T. 33/M/Seattle,WA”得到了这个答案。我在这里发布它是因为它非常有用。
-
你的第二种形式实际上应该工作;尝试将这4行粘贴到一个新脚本中并运行它来查看。最有可能的问题是,在第二个示例中,“hlwvar = Hello World”实际上并未执行,因为它不在脚本的顶部。当AHK第一次运行脚本时,它从顶部开始执行,直到遇到“返回”或热键/热键定义。因此,您应该始终在脚本顶部定义全局变量和任何其他全局设置,并且一旦所有脚本“初始化”都完成了,就以“返回”结束。然后把所有你的热点/热键/功能放在那个点以下。
我喜欢做的一件事是把我所有的全局东西放入一个函数中,例如 的init() { 全球 someglobalvar = myvalue的 回报 } 然后在我的脚本的顶部,我有 的init() 回报
这使得它很容易一目了然查明我的init东西生活,以及如果需要,可以在其他地方移动init例程。请注意,如果您希望所有在该函数中分配的变量全局可用,则“全局”关键字必须是函数定义中的第一个命令。
克里斯指出了什么,我的答案是什么。 :) – RaptorX 2010-08-03 11:28:42
除了克里斯说:“不知道什么问题是......?” Joel说:“最有可能的问题是,在第二个例子中,”hlwvar = Hello World“实际上并未被执行,因为它不在脚本的顶部。”看到不同? – Eric 2010-08-05 04:00:35
然后没有足够的信息提供您的问题。因为如果你把那个我刚刚给你的脚本简单地起作用。 如果我知道这是一个更大的脚本的一部分,那么我可以说这个位置确实影响克里斯和其他人提到的。如果它不在脚本的autoexecute部分,它根本就不会被识别。 – RaptorX 2011-04-01 18:06:18
正如克里斯提到的以下两个代码的工作完全一样对我来说:
::hlw:: hlwvar = Hello World sendInput %hlwvar% return
和
hlwvar = Hello World ::hlw:: sendInput %hlwvar% return
我已经复制了你的底部代码(尽管我把它放到4行中)并且对我来说工作正常。不确定是什么问题...? – 2010-07-23 12:32:15