我正在使用一个文件将数据发送到全局变量文件中的全局变量,然后让另一个文件尝试从全局文件中检索该数据。
示例:
主文件将数据发送到全局文件,其他文件从全局文件中获取数据
由于某种原因,数据未被保留。当我从全局文件中提取数据时,它不在那里。这是为什么?
以下是一些示例代码:
;main.au3
#include-once
#include "global.au3"
$g1 = "stuff"
$g2 = "stuff"
Run("copy.exe")
;global.au3
#include-once
Global $g1 = ""
Global $g2 = ""
;copy.au3
#include-once
#include "global.au3"
MsgBox(0, $g1, $g2)
main.au3和copy.au3已经内置到.exe中,我双击main来运行它。
结果:$ g1和$ g2等于“”和“”应该打印“东西”
答案 0 :(得分:2)
这是因为global.au3
没有更新。它为您的变量提供初始值。使用#include "global.au3"
与写作相同:
;main.au3
#include-once
Global $g1 = ""
Global $g2 = ""
$g1 = "stuff"
$g2 = "stuff"
Run("copy.exe")
和
;copy.au3
#include-once
Global $g1 = ""
Global $g2 = ""
MsgBox(0, $g1, $g2)
如您所见,copy.au3
(copy.exe
)已将$g1
和$g2
设置为""
。
要将$g1
和$g2
变量传递给copy.exe
,您可以使用IniRead()/IniWrite()
来读取/写入.ini文件,也可以将变量作为命令行参数传递
以下是命令行参数选项的示例:
(不需要global.au3; 编译main.au3和copy.au3; 双击main.exe运行)
<强> main.au3 强>
;main.au3
$g1 = "stuff"
$g2 = "stuff"
ShellExecute('copy.exe', $g1 & ' ' & $g2)
<强> copy.au3 强>
;copy.au3
$g1 = $CmdLine[1]
$g2 = $CmdLine[2]
MsgBox(0, $g1, $g2)
我使用ShellExecute()
而不是Run()
,因为Run()
过去一直是a $$的痛苦(对我而言)。我ShellExecute()
和ShellExecuteWait()
通常不会遇到任何问题。
此外,有关命令行参数的更多信息,您可以在AutoIt帮助中搜索“命令行参数”。