2011-01-13 29 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幫助中的「命令行參數」上進行搜索。