質問
1つのファイルを使用して、Globalsファイルのグローバル変数にデータを送信し、別のファイルを試してからGlobalsファイルからそのデータを取得してから取得しています。
例:
メインファイルはデータをグローバルファイルに送信し、他のファイルはグローバルファイルからデータを取得します
何らかの理由で、データは保存されていません。グローバルファイルからデータを取得すると、そこにはありません。どうしてこれなの?
これがコードの例です。
;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は、 ""と ""を印刷する必要があるときに等しくなります。
解決
それの訳は 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をダブルクリックして実行します)
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()
.
また、コマンドラインパラメーターの詳細については、自動車ヘルプの「コマンドラインパラメーター」で検索できます。