2011-01-13 8 views
0

グローバルファイル内のグローバル変数にデータを送信するために1つのファイルを使用していて、別のファイルを使用してそのデータをグローバルファイルから取得しようとしています。データが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セットを持っています。 copy.exeにご$g1$g2変数を渡すには

、あなたは/ .iniファイルを作成するか、コマンドラインパラメータとして変数を渡す読み取るためにIniRead()/IniWrite()を使用することができます。

メイン

(;; コンパイルmain.au3とcopy.au3実行するための ダブルクリックMAIN.EXE何global.au3は必要ありません):

ここでは、コマンドラインの例ですがオプションパラメータ.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) 

Run()はこれまで(私にとっては)$$の痛みでしたので、Run()の代わりにShellExecute()を使用しました。私は通常、ShellExecute()ShellExecuteWait()の問題はありません。

また、コマンドラインパラメータの詳細については、AutoItヘルプの「コマンドラインパラメータ」で検索できます。

関連する問題