数据未在autoit中保留

时间:2011-01-13 00:22:15

标签: autoit

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

示例:

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

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

以下是一些示例代码:

;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等于“”和“”应该打印“东西”

1 个答案:

答案 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.au3copy.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帮助中搜索“命令行参数”。