Это потому, что 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()
был болью в $$ в прошлом (для меня).У меня обычно не возникает проблем с ShellExecute()
и ShellExecuteWait()
.
Кроме того, для получения дополнительной информации о параметрах командной строки вы можете найти «Параметры командной строки» в справке AutoIt.