0

我正在使用一个文件将数据发送到全局文件中的全局变量,然后让另一个文件尝试从全局文件中检索该数据。

例子:

主文件将数据发送到全局文件,其他文件从全局文件中获取数据

由于某种原因,数据没有被保留。当我从全局文件中提取数据时,它不存在。为什么是这样?

这是一些示例代码:

;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 在应该打印 "stuff" 时等于 "" 和 ""

4

1 回答 1

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运行)

主.au3

;main.au3

$g1 = "stuff"
$g2 = "stuff"

ShellExecute('copy.exe', $g1 & ' ' & $g2)

复制.au3

;copy.au3

$g1 = $CmdLine[1]
$g2 = $CmdLine[2]

MsgBox(0, $g1, $g2)

我使用ShellExecute()而不是Run()因为Run()过去(对我而言)一直是 a$$ 的痛苦。ShellExecute()我通常对and没有任何问题ShellExecuteWait()

此外,有关命令行参数的更多信息,您可以在 AutoIt 帮助中搜索“命令行参数”。

于 2011-01-13T17:31:21.253 回答