2011-01-13 67 views
0

我正在使用一个文件将数据发送到全局变量中的全局文件,并让另一个文件尝试从全局文件中检索数据。数据未被保存在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和我双击主运行它。

结果:$ G1和G2 $等于“”和“”时,应打印“东西”

回答

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

主.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()在过去(对我来说)一直是痛苦的$$。我通常不会与ShellExecute()ShellExecuteWait()有任何问题。

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